2010-12-14 62 views
7

J'ai créé un UIWebView pour me connecter à l'interface OAuth de l'API Graph de Facebook. Cela fonctionne très bien, mais je dois appuyer sur le premier champ de saisie pour que le clavier apparaisse. Idéalement, le clavier apparaîtra dès que le formulaire apparaîtra. J'ai donc essayé de comprendre comment faire le premier champ de formulaire le focus de la méthode webViewDidFinishLoad: de UIWebViewDelegate, comme ceci:Comment puis-je obtenir un UIWebView pour se concentrer sur une entrée de formulaire et afficher le clavier?

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

Hélas, cela ne fonctionne pas. Curieusement, quand je lance ce JavaScript dans la console JavaScript de Firefox, il se concentre sur le champ email. Quand je l'exécute dans Safari pour le Mac, cependant, il ne fait rien, tout comme sur iOS. FWIW, alert(document.getElementsByName('email')[0])ne montre qu'il sélectionne un HTMLInputElement. Alors, pourquoi focus() ne fait rien dans iOS ou Mac OS X?

+3

Je ne pense pas qu'il soit possible. Voir http://stackoverflow.com/questions/4199225/how-to-get-mobile-browsers-webkit-in-ios-android-to-display-their-soft-keyboar – Soumya

+0

Merci, ça aide. Si vous aviez placé cela comme une réponse, je l'aurais marqué comme la bonne réponse. :-) – theory

Répondre

27

Ceci est maintenant possible avec 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

Nouveaux visiteurs: faites attention au JavaScript après le pli :) –

+1

Est-ce réalisable avec WKWebView au lieu d'un UIWebView? – Fizzix

0

Comme soumya92 souligne dans le commentaire à l'article original, this post trouve que ce n'est pas possible en ce moment. Hélas.

+1

vous devriez reconsidérer la meilleure réponse à @ Arcank. –

+1

@DirtyHenry Terminé. – theory