2012-02-20 3 views
0

В моем приложении iOS иногда отображается полноэкранное объявление Greystripe при запуске. Если это объявление показывается, то, когда я его отклоню, позже я коснусь текстового поля в UIWebView, но клавиатура не появится. Однако, если объявление Greystripe НЕ отображается, тогда все будет хорошо, и клавиатура будет отображаться, как ожидалось.Полноэкранное объявление, вызывающее клавиатуру, не отображается

После выполнения некоторых исследований я думаю, что это имеет какое-то отношение к Greystripe, ставшему первым ответчиком, но я не уверен, как это исправить.

Edit: Я использую AdWhirl и так, чтобы получить объявление запуска я делаю именно так, как он говорит здесь: http://wiki.greystripe.com/index.php/AdWhirl

UIWebView находится внутри другого контроллера, который представлен с presentModalViewController:animated: на главном экране.

Я сузил проблему: проблема возникла после запуска Greystripe, которая возникает либо из объявления полного запуска, которое я запускаю вручную, либо из AdWhirl, автоматически инициирующего его, чтобы отображать баннер Greystripe 320x50.

+0

Если вы объяснить предложенную иерархию вида, мы могли бы быть в состоянии выяснить, что происходит. Я подозреваю, что вы добавили свое объявление в определенный подзаголовок вашего 'UIWindow' (тот, который использует клавиатура). Кроме того, вы можете просто опубликовать код, который вы используете для реализации вашего объявления. – fscheidl

+0

Объявление Greystripe вызывается через '[GSAdEngine displayFullScreenAdForSlotNamed: @" gsFullScreen "]', но проблема также возникает, если Adwhirl инициирует Greystripe при показе рекламного баннера Greystripe (см. Мои правки выше). – user1221973

ответ

1

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

Чтобы решить эту проблему, мне пришлось вручную сделать мой контроллер представления, который содержит мой UIWebView Ключа окна каждый раз после увольнения SVProgressHUD:

[SVProgressHUD dismiss]; 
[self.view.window makeKeyWindow]; 
Смежные вопросы