7

我创建了一个 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 中什么都不做呢?

4

2 回答 2

28

现在,这在 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];
于 2012-10-01T10:04:03.453 回答
0

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

于 2011-01-24T01:03:54.647 回答