全屏广告导致键盘不出现

问题描述:

我的iOS应用有时在启动时显示Greystripe全屏广告。如果此广告显示,那么当我解雇它时,稍后我将点击UIWebView中的文本字段,但键盘不会显示。但是,如果Greystripe广告没有出现,则一切正常,键盘将按预期显示。全屏广告导致键盘不出现

经过一番研究,我认为它与Greystripe使自己成为第一响应者有关,但我不知道如何解决这个问题。

编辑: 我使用的AdWhirl等,因为它说,在这里,以获得启动广告我做的正是:http://wiki.greystripe.com/index.php/AdWhirl

的UIWebView的是呈现presentModalViewController:animated:从主力另一个控制器内。

我缩小了问题的范围:启动Greystripe后会出现问题,这可能是由我手动启动的全屏启动广告或AdWhirl自动启动显示320x50的Greystripe横幅出现的。

+0

如果你解释你提出的视图层次,我们也许能够找出到底是怎么回事。我怀疑你将你的广告添加到你的'UIWindow'的某个子视图(键盘正在使用的那个)。另外,你可以发布你用来实现广告的代码。 – fscheidl 2012-02-20 20:54:50

+0

Greystripe广告通过'[GSAdEngine displayFullScreenAdForSlotNamed:@“gsFullScreen”]'调用,但如果Adwhirl在显示Greystripe横幅广告时启动Greystripe(请参阅上面的编辑),也会出现此问题。 – user1221973 2012-02-21 02:58:54

经过几个小时的调试,我终于明白了。我使用SVProgressHUD显示加载状态,而我的UIWebView加载。 SVProgressHUD.m使自己成为关键窗口,然后在关闭窗口时,它将关键窗口状态返回到“最上层”窗口。出于某种原因,与我使用的其他所有广告网络不同,Greystripe使其成为最顶层的窗口。所以问题可能是Greystripe使它本身太重要,或者SVProgressHUD错误地计算最上面的窗口!

为了解决这个问题,我不得不手动做这每一次包含了我一个UIWebView的关键窗口驳回SVProgressHUD后我的视图控制器:

[SVProgressHUD dismiss]; 
[self.view.window makeKeyWindow];