如何让UIWebView专注于表单输入并调出键盘?

时间:2010-12-14 18:32:52

标签: javascript safari uiwebview focus uiwebviewdelegate

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

- (void)webViewDidFinishLoad:(UIWebView *)wv {
    [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByName('email')[0].focus();"];
}
唉,这不起作用。奇怪的是,当我在Firefox JavaScript控制台中运行JavaScript时,它确实将焦点移到了电子邮件字段。然而,当我在Safari for Mac中运行它时,它什么也没做,就像在iOS上一样。 FWIW,alert(document.getElementsByName('email')[0]) 表明它选择了一个HTMLInputElement。那么为什么focus()在iOS或Mac OS X中什么都不做?

2 个答案:

答案 0 :(得分:27)

现在可以使用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];

答案 1 :(得分:0)

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