Как я могу заставить UIWebView сосредоточиться на вводе формы и вызвать клавиатуру? - PullRequest
7 голосов
/ 14 декабря 2010

Я создал UIWebView для входа в OAuth-интерфейс Graph API Facebook.Это прекрасно работает, но я должен коснуться первого поля ввода, чтобы клавиатура всплыла.В идеале клавиатура должна появиться, как только появится форма.Поэтому я пытался выяснить, как заставить первое поле формы получить фокус с помощью метода webViewDidFinishLoad: UIWebViewDelegate, например так:

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

Увы, это не работает.Любопытно, что когда я запускаю этот JavaScript в консоли Firefox JavaScript, он перемещает фокус на поле электронной почты.Однако когда я запускаю его в Safari для Mac, он ничего не делает, как на iOS.FWIW, alert(document.getElementsByName('email')[0]) показывает , что он выбирает HTMLInputElement.Так почему же focus() ничего не делает ни в iOS, ни в Mac OS X?

Ответы [ 2 ]

27 голосов
/ 01 октября 2012

Теперь это возможно с 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 голосов
/ 24 января 2011

Поскольку soumya92 указывает в комментарии к исходному сообщению, это сообщение считает, что в настоящее время это невозможно. Увы.

...