如何在UIWebView中取消文本字段的编辑?

3
我正在开发一个嵌入式UIWebView的应用程序。
用户可以在Web视图中的文本字段中输入位置信息,但也会尝试使用核心位置来查找当前位置。
如果核心位置提供了准确的答案并且用户当前正在编辑位置,则我希望取消编辑并以编程方式填充位置字段。这是基于这样的假设:绝大多数情况下,用户将想要使用他们的当前位置,如果他们正在编辑该字段,他们宁愿自动填充该字段而不必完成输入。
我的问题是:如何在UIWebView中取消编辑?如果它是普通的文本输入字段,我会强制它放弃第一响应者,键盘就会消失,但我不知道如何在UIWebView中实现。将resignFirstResponder发送到WebView不能解决问题。
是否可以使用JavaScript和WebView上的stringByEvaluatingJavaScriptFromString:执行某些操作?还有其他方法吗?
4个回答

7
只需要使用[webView endEditing:YES];。

2
[webView stringByEvaluatingJavaScriptFromString:@"document.activeElement.blur();"];

1

你最好采用JavaScript的方法,查看表单字段焦点值,并尝试使其失去焦点。

看起来你想要的是:

window.blur();

Kendall,非常感谢您的回答,不幸的是它似乎不起作用。我在编辑期间尝试了'NSLog(@“javascript result%@”,[mainWebView stringByEvaluatingJavaScriptFromString:@“window.blur();”]);',但键盘仍然保持打开状态,并且没有错误被打印出来。您能想到其他要尝试的事情吗? - oldbeamer

1
所以诀窍在于使用“blur()”,但仅在选定的字段上使用,而不是整个窗口。
如果“self”是UIWebView的子类,则以下代码片段可以实现此技巧:
[self stringByEvaluatingJavaScriptFromString:@"document.getElementsByName('textField')[0].blur();"];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接