the*_*ory 7 javascript safari focus uiwebview uiwebviewdelegate
我创建了一个UIWebView,用于登录Facebook的Graph API OAuth界面.这很好用,但我必须点击第一个输入字段才能弹出键盘.理想情况下,只要表单出现,键盘就会出现.所以我一直在试图弄清楚如何使第一个表单字段从webViewDidFinishLoad:
UIWebViewDelegate方法获得焦点,如下所示:
- (void)webViewDidFinishLoad:(UIWebView *)wv {
[webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByName('email')[0].focus();"];
}
Run Code Online (Sandbox Code Playgroud)
唉,这不起作用.奇怪的是,当我在Firefox JavaScript控制台中运行JavaScript时,它确实将焦点移到了电子邮件字段.然而,当我在Safari for Mac中运行它时,它什么也没做,就像在iOS上一样.FWIW alert(document.getElementsByName('email')[0])
确实显示它选择了一个HTMLInputElement.那么为什么focus()
在iOS或Mac OS X 中什么都不做?
Arc*_*ank 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];
Run Code Online (Sandbox Code Playgroud)