【问题标题】:iPhone UIWebView becomeFirstResponderiPhone UIWebView 成为FirstResponder
【发布时间】:2011-05-09 00:13:37
【问题描述】:

我有一个UIWebView,其中有一个<input type="text"/> html 元素。 我想将输入元素集中在 html 中,并以编程方式在 iPhone 上显示键盘,而无需点击屏幕。

我尝试了以下方法:

  • 从 JavaScript 设置焦点(在这种情况下,onFocus JS 事件将触发但键盘不会显示)
  • [webView becomeFirstresponder](返回 NO)
  • 将 webView 的第一个子视图设置为 firstResponder(返回 NO)
  • 子类UIWebViewcanBecomeFirstResponder 返回YES:(没有任何反应)

我从昨天开始一直在寻找解决方案,但找不到。 请帮忙。

【问题讨论】:

  • 我不知道你是如何设法造成这个问题的,但通常必须像我在文章中描述的那样使用 becomeFirstResponder:bcaccinolo.wordpress.com/2010/12/28/…
  • -1,它不适用于 UIWebView。
  • 您找到解决方案了吗?我发现的唯一方法是以编程方式模拟 WebView 上的单击。但是我的应用可能会因此被拒绝...... :(
  • 从 iOS 6 开始,您可以使用 keyboardDisplayRequiresUserAction 来执行此操作。
  • 你有没有试过把focus方法放到网页的onload动作上?

标签: iphone uiwebview


【解决方案1】:

在iOS6或以上,你必须先将keyboardDisplayRequiresUserAction设置为NO

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{
    webView.keyboardDisplayRequiresUserAction = NO;
    [webView stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"theElementId\").setFocus();"]; 
}

【讨论】:

    【解决方案2】:

    你试过吗?不要忘记连接 UIWebView 的委托连接,最好只在需要时执行 javascript。

    - (void)webViewDidFinishLoad:(UIWebView *)webView {
        [webView stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"theElementId\").setFocus();"]; 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多