【问题标题】:How can I get a UIWebView to focus on a form input and bring up the keyboard?如何让 UIWebView 专注于表单输入并调出键盘?
【发布时间】:2010-12-14 18:32:51
【问题描述】:

我创建了一个 UIWebView 用于登录 Facebook 的 Graph API OAuth 接口。这很好用,但我必须点击第一个输入字段才能弹出键盘。理想情况下,一旦表单出现,键盘就会出现。所以我一直试图弄清楚如何让第一个表单字段从webViewDidFinishLoad: UIWebViewDelegate 方法中获得焦点,如下所示:

- (void)webViewDidFinishLoad:(UIWebView *)wv {
    [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByName('email')[0].focus();"];
}

唉,这行不通。奇怪的是,当我在 Firefox JavaScript 控制台中运行该 JavaScript 时,它确实将焦点移到了电子邮件字段。但是,当我在 Mac 的 Safari 中运行它时,它什么也不做,就像在 iOS 上一样。 FWIW,alert(document.getElementsByName('email')[0]) 确实表明它选择了一个 HTMLInputElement。那么为什么focus() 在 iOS 或 Mac OS X 中什么都不做呢?

【问题讨论】:

标签: javascript safari uiwebview focus uiwebviewdelegate


【解决方案1】:

iOS 6 现在可以做到这一点。

UIWebView* webView = <#your webView here#>;
[webView setKeyboardDisplayRequiresUserAction:NO];
[webView loadHTMLString:@"<html><head></head><body><form><input id=\"textField\" /></form><script>document.getElementById(\"textField\").focus();</script></body></html>"
                baseURL:nil];

【讨论】:

  • 新访客:注意折叠后的JavaScript :)
  • 这可以通过 WKWebView 而不是 UIWebView 实现吗?
【解决方案2】:

正如soumya92 在对原帖的评论中指出的那样,this post 发现目前不可能。唉。

【讨论】:

  • 你应该重新考虑最好的答案是@Arcank's。
猜你喜欢
  • 1970-01-01
  • 2018-09-22
  • 1970-01-01
  • 1970-01-01
  • 2019-01-21
  • 1970-01-01
  • 2017-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多