2010-12-14 31 views
7

我創建了一個用於登錄到Facebook的Graph API OAuth界面的UIWebView。這很好,但我必須點擊第一個輸入字段才能彈出鍵盤。理想情況下,只要出現表單,鍵盤就會出現。所以,我一直在試圖找出如何使第一個窗體域從webViewDidFinishLoad: UIWebViewDelegate方法獲得焦點,就像這樣:如何獲得UIWebView以專注於表單輸入並調出鍵盤?

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

唉,這是行不通的。奇怪的是,當我在Firefox JavaScript控制檯中運行該JavaScript時,它將焦點移至電子郵件字段。但是,當我在Safari中爲Mac運行它時,它不會像iOS上一樣。 FWIW,alert(document.getElementsByName('email')[0])確實表明它選擇一個HTMLInputElement。那麼爲什麼focus()在iOS或Mac OS X中不做任何事情?

+3

我不認爲這是可能的。見http://stackoverflow.com/questions/4199225/how-to-get-mobile-browsers-webkit-in-ios-android-to-display-their-soft-keyboar – Soumya 2010-12-15 05:56:59

+0

謝謝,這有幫助。如果您將其作爲答案,我會將其標記爲正確的答案。 :-) – theory 2010-12-16 05:59:52

回答

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]; 
+0

新訪問者:關注摺疊後的JavaScript :) – 2013-03-19 20:58:04

+1

這是用WKWebView而不是UIWebView實現的嗎? – Fizzix 2016-03-17 07:54:38

0

由於soumya92在原始帖子的評論中指出,this post發現目前尚不可能。唉。

+1

你應該重新考慮成爲@Acank的最佳答案。 – 2013-03-19 20:58:48

+1

@DirtyHenry完成。 – theory 2013-05-25 06:23:13