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

Posted

技术标签:

【中文标题】如何取消 UIWebView 中的文本字段编辑?【英文标题】:How do I cancel a text field edit in a UIWebView? 【发布时间】:2009-04-27 01:57:08 【问题描述】:

我正在开发一个带有嵌入式 UIWebView 的应用程序。

用户可以在 Web 视图的文本字段中输入位置,但也会努力使用核心位置来发现当前位置。

如果核心位置提供了准确的答案并且用户当前正在编辑位置,我想取消编辑并以编程方式填充位置字段。这是基于这样的假设,即用户在绝大多数情况下都希望使用他们当前的位置,并且如果他们正在编辑该字段,他们宁愿它是自动填充的,而不是必须完成输入他们的位置。

我的问题是,如何取消 UIWebView 中的编辑?如果它是一个普通的文本输入字段,我会强制它退出第一响应者并且键盘会消失,但我不知道如何使用 UIWebView 来做到这一点。将 resignFirstResponder 发送到 Web 视图不会这样做。

在 web 视图上使用 javascript 和 stringByEvaluatingJavaScriptFromString: 可以完成一些事情吗?还有其他方法吗?

【问题讨论】:

【参考方案1】:

只需使用 [webView endEditing:YES];

【讨论】:

【参考方案2】:
[webView stringByEvaluatingJavaScriptFromString:@"document.activeElement.blur();"];

【讨论】:

【参考方案3】:

最好的选择是 Javascript 方法,查看表单字段的焦点值,看看是否可以使其失去焦点。

看起来你可能想要的是:

window.blur();

【讨论】:

Kendall,非常感谢您的回答,不幸的是,它似乎不起作用。我试过' NSLog(@"javascript result %@",[mainWebView stringByEvaluatingJavaScriptFromString:@"window.blur();"]);'在编辑过程中,键盘保持不动,没有打印错误。你能想出其他的尝试吗?【参考方案4】:

所以诀窍是使用'blur()',但只能在选定的字段上使用,而不是在整个窗口上。

如果 'self' 是 UIWebView 的子类,则以下代码 sn-p 可以解决问题:

[self stringByEvaluatingJavaScriptFromString:@"document.getElementsByName('textField')[0].blur();"];

【讨论】:

以上是关于如何取消 UIWebView 中的文本字段编辑?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iPad 应用程序中取消选择选定的文本

快速禁用 UIwebView textField 中的键盘

单击文本字段时 iOS 7 中的 UIWebView 问题

在UIWebView中设置文本字段的文本

如何发现 TextField 编辑被取消/键盘折叠/焦点丢失

当用户在 UIWebView 中点击时,默认键盘如何出现?