клавиатура в UIWebView показывает, а затем скрывается на фокус ввода - PullRequest
8 голосов
/ 15 января 2011

У меня есть страница, которая загружается в UIWebView (который занимает 100% экрана) на iPad.

Когда я касаюсь текстового поля, страница размещает текстовое поле в нужном месте, иклавиатура начинает подниматься, но затем поворачивается и возвращается вниз, и в поле ввода вызывается размытие.

Когда я пробую эту же страницу в мобильном Safari, клавиатура может успешно развернуться.

Я не могу понять, каковы правила для клавиатуры, чтобы она успешно отображалась и не ложилась спать = и почему для uiwebview это отличается от сафари.

Все мои исследования по этому вопросу не дали ответов.

1 Ответ

1 голос
/ 18 мая 2014

Не имея кода, размещенного в вашем вопросе, я предполагаю, что возврат клавиатуры назад происходит только при касании текстового поля HTML до последнего вызова UIWebViewDelegate webViewDidFinishLoad:

Чтобы проверить это, сначалаустановите UIWebView.delegate на UIViewController, которому он принадлежит (или на любой объект, которому принадлежит UIWebView).Затем реализуйте эти методы делегата.

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSString *urlString = request.URL.absoluteString;
    NSLog(@"%@ with URL = %@", NSStringFromSelector(_cmd), urlString);

    return YES;
}

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSString *urlString = webView.request.URL.absoluteString;
    NSLog(@"%@ with URL = %@", NSStringFromSelector(_cmd), urlString);
}

Запустите ваше приложение и запишите количество раз, которое вызывается webViewDidFinishLoad:.(Если ваша веб-страница содержит несколько фреймов или содержит такие элементы, как Google Analytics, она будет вызываться несколько раз.)

Попробуйте коснуться текстового поля HTML после вызова `webViewDidFinishLoad: 'в последний раз.Клавиатура остается включенной?(Я бы так подумал).

Если это сработает, то попробуйте подключиться перед финальным вызовом `webViewDidFinishLoad: '.Анимация клавиатуры вверх, но затем вниз?

...