如何取消 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 中的文本字段编辑?的主要内容,如果未能解决你的问题,请参考以下文章