2012-02-20 44 views
0

我的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

回答

1

經過幾個小時的調試,我終於明白了。我使用SVProgressHUD顯示加載狀態,而我的UIWebView加載。 SVProgressHUD.m使自己成爲關鍵窗口,然後在關閉窗口時,它將關鍵窗口狀態返回到「最上層」窗口。出於某種原因,與我使用的其他所有廣告網絡不同,Greystripe使其成爲最頂層的窗口。所以問題可能是Greystripe使它本身太重要,或者SVProgressHUD錯誤地計算最上面的窗口!

爲了解決這個問題,我不得不手動做這每一次包含了我一個UIWebView的關鍵窗口駁回SVProgressHUD後我的視圖控制器:

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