我的iOS应用有时会在启动时显示Greystripe全屏广告。如果此广告显示,那么当我关闭它时,稍后我将点击UIWebView中的文本字段,但键盘将不会显示。但是,如果Greystripe广告没有出现,那么一切都很好,键盘将按预期显示。
在做了一些研究后,我认为它与Greystripe有关,使自己成为第一个响应者,但我不知道如何解决这个问题。
修改 我使用adwhirl来获取我在此处完成的启动广告:http://wiki.greystripe.com/index.php/AdWhirl
UIWebView位于另一个从主视图中显示presentModalViewController:animated:
的控制器内。
我缩小了问题范围:问题是在启动Greystripe后引起的,Greystripe发生在我手动启动的全屏启动广告或AdWhirl自动启动它以显示320x50 Greystripe横幅。
答案 0 :(得分:1)
经过几个小时的调试后,我终于明白了。在我的UIWebView加载时,我使用SVProgressHUD来显示加载状态。 SVProgressHUD.m使自己成为关键窗口,然后当它被解除时,它将关键窗口状态返回到“最顶层”窗口。出于某种原因,Greystripe与我正在使用的所有其他广告网络不同,它使自己成为最顶层的窗口。所以问题可能是Greystripe让自己太重要了,或者SVProgressHUD错误计算了最顶层的窗口!
要解决这个问题,每次解除SVProgressHUD后,我必须手动将包含我的UIWebView的视图控制器作为关键窗口:
[SVProgressHUD dismiss];
[self.view.window makeKeyWindow];