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

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

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

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

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

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

【问题讨论】:

    标签: iphone cocoa-touch


    【解决方案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();"];
        

        【讨论】:

          猜你喜欢
          • 2012-02-24
          • 1970-01-01
          • 1970-01-01
          • 2011-05-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-03
          • 2019-11-09
          相关资源
          最近更新 更多