2014-09-24 64 views
2

使用iOS8時,我注意到當以前使用iOS7時,視圖控制器不再接收UIKeyboardWillSHowNotification。UIKeyboardWillShowNotification - iOS8 vs iOS7

這裏的情形:

1)查看控制器A顯示鍵盤,並且在不辭職第一響應推視圖控制器B

2.)查看控制器B具有期間變爲第一響應者的控制它的viewDidLoad調用在被VCA創建之前被它壓入導航控制器

3.)如果VC A在按B時不顯示鍵盤,則通知正常工作。但是,如果按下B時A仍然在編輯,那麼B沒有得到鍵盤會顯示通知。

沒有鍵盤通知,VC B沒有調整大小/重新定位並且看起來不正確。


我使用,直到我找到一個解決辦法就是做任何視圖控制器可能推動可能被編輯另一個視圖控制器時,可以編輯以下解決方法:

即推另一前視圖控制器,一定要打電話: [self.view endEditing:YES];

雖然它起作用,但在顯示視圖控制器(B)之前,應用程序的狀態可能會「斷開」視圖控制器(B)似乎不太好。


問題:我在這裏做錯了什麼?

據我所知,3件事情之一是可能的:

A.),我應該是得到通知,但我不是B/C我做錯了

B.)我應該越來越通知,但我b/C中的錯誤

C.)我不能依靠總是得到通知不......但是,如果我不」當它出現在VC B中時,我需要能夠獲取顯示的鍵盤的鍵盤尺寸不依賴於鍵盤通知信息。所有的蘋果文檔都聲稱使用這些通知(儘可能找到)......它指向選項A.)或B.)。


我可以創建和上傳的示例代碼今晚稍後/早明天,試圖隔離/爲你所有的測試/重放,看看我在做什麼。

回答

0

我可以看到與iOS8/xCode6(適用於iOS7和xCode5)相同的問題。就我而言,我在AppDelegate中觀察模型上的systemStatus屬性,以便將用戶登出並在用戶從應用程序中的任何位置註銷時將用戶帶回登錄屏幕。我通過在我的App Delegate observeValueForKeyPath:方法中將window.rootViewController設置爲loginViewController來做到這一點。

這適用於iOS7/xCode5,但在iOS8/xCode6上,我放鬆了鍵盤的方式。看起來像我的loginViewController可能註冊的鍵盤通知(在其ViewWillAppear方法)之前,窗口的rootViewController切換完成(在iOS8中),從而註冊到舊窗口的通知中心...

我將註冊鍵盤通知ViewDidAppear:方法,而這似乎解決它,但不知何故,這似乎被稱爲兩次出於某種原因。