UIWebView не показывает клавиатуру при фокусировке на текстовое поле при второй загрузке - PullRequest
2 голосов
/ 18 февраля 2012

У меня действительно странная проблема с UIWebView.

Я использую его для входа пользователей в несколько сервисов, Я открываю UIWebView, показываю страницу входа в HTML и нажимаю одно из текстовых полей, чтобы открыть клавиатуру, как и должно быть.

enter image description here

Впоследствии, если я попытаюсь загрузить на него другой экран входа в систему, нажатие кнопки ввода по какой-то причине не отобразит клавиатуру.

enter image description here

Кто-нибудь из вас сталкивался с этой странной ошибкой? Я попытался проверить [self.window makeKeyAndVisible];, как я видел некоторые рекомендации, но, к сожалению, это не решает проблему: (

Вот как я загружаю UIWebView:

[webAuth stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML = \"\";"];
[webAuth loadRequest: [NSURLRequest requestWithURL:  [NSURL urlWithString:@"http://whatever"] ]];

Первая строка для очистки страницы (попытался удалить ее, это не решает проблему с клавиатурой)

Ответы [ 2 ]

2 голосов
/ 21 февраля 2012

Мне очень жаль, если я что-то пропустил, но я не могу воспроизвести вашу ошибку.Не могли бы вы указать настройки более подробно?(Я бы предпочел добавить это сообщение в качестве комментария, но пока не пользуюсь репутацией, извините. Пожалуйста, не стесняйтесь поменять этот ответ на комментарий)

Что я делаю:

  1. Я использую iOS SDK 5.0 и пробовал на симуляторе iOS5.0 и iPhone4 с iOS5.0
  2. Я создал простое приложение на основе представления и перетащил в кнопку и веб-просмотр вфайл пера
  3. Я вызываю первый веб-сайт в viewDidLoad, который является логином Facebook

    - (void)viewDidLoad {
      [super viewDidLoad];
      [self.webAuth stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML = \"\";"];
      [self.webAuth loadRequest: [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://facebook.com"]]];
    }
    
  4. Я использую вышеупомянутую кнопку для вызовавторой сайт, твиттер логин

    - (IBAction)showWebsite:(UIButton *)sender {
        [self.webAuth stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML = \"\";"];
        [self.webAuth loadRequest: [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://twitter.com/#!/login"]]];
    }
    
  5. Я авторизируюсь на Facebook, затем нажимаю кнопку и нажимаю на любое поле ввода логина Twitter

  6. Все,включая клавиатуру, работает как положено
1 голос
/ 21 февраля 2012

Я пишу это на случай, если кто-нибудь еще столкнется с этим -
Похоже, что причиной проблемы было использование SVProgressHUD для представления загрузчика во время загрузки веб-страниц. Я не уверен, как, но когда я их комментирую, все работает, как ожидалось.

Обновление: Сэм исправил компонент SVProgressHUD, и теперь он работает без проблем с viewDidLoad

...