iPhone UIWebView стал первым ответчиком - PullRequest
8 голосов
/ 12 ноября 2010

У меня есть UIWebView с элементом <input type="text"/> html. Я хочу сфокусировать элемент ввода в html и показать клавиатуру на iPhone программно, не касаясь экрана.

Я пробовал следующее:

  • установить фокус с JavaScript (в этом случае сработает событие onFocus JS, но клавиатура не появится)
  • [webView becomeFirstresponder] (возвращает НЕТ)
  • установить первое подпредставление webView равным firstResponder (возвращает НЕТ)
  • подкласс UIWebView для возврата ДА на canBecomeFirstResponder: (ничего не происходит)

Я пытаюсь найти решение со вчерашнего дня, но я не смог его найти. Пожалуйста, помогите.

Ответы [ 2 ]

2 голосов
/ 06 апреля 2016

В iOS6 или выше, вы должны сначала установить keyboardDisplayRequiresUserAction на NO:

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{
    webView.keyboardDisplayRequiresUserAction = NO;
    [webView stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"theElementId\").setFocus();"]; 
}
0 голосов
/ 16 мая 2013

Вы пробовали это?Не забудьте подключить делегатское соединение UIWebView и в идеале выполнять javascript только при необходимости.

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    [webView stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"theElementId\").setFocus();"]; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...