2012-04-19 35 views
0

我一直在玩iPad的分離鍵盤框架。拆分鍵盤運動檢測

好吧,看來UIKeyboardWillChangeFrame被觸發時分離式鍵盤是顯示或隱藏。

在塢模式,UIKeyboardWillShowUIKeyboardWillHide通知被觸發。

在NSNotification對象,我們都能夠檢索這兩個停靠和拆分模式也是鍵盤的框架。

現在,當我們移動分離式鍵盤在屏幕上真正的樂趣開始。每次我們在屏幕上移動鍵盤時,通知對象中的終端都是(0,0,0,0)。在我使用convertFrame座標變換框架轉換爲(0,-124,0,0)後。這對於向上或向下方向的鍵盤移動都是正確的。

在所有其他情況下,endframe似乎在框架上提供了正確的座標。

這段代碼給了我確切的點數。

CGRect startFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue];

CGRect endFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];

這endframe是(0,0,0,0)當用戶移動所述分裂鍵盤在屏幕上。

我們根據當前視圖得到正確的座標:

CGRect convertedStartFrame = [self.view.window convertRect:startFrame toView:self.view]; 

CGRect convertedEndFrame = [self.view.window convertRect:endFrame toView:self.view]; 

This convertedEndFrame = (0,-124,0,0) when endFrame = (0,0,0,0). 

還有一兩件事,我不是通過代碼移動鍵盤。

我不太確定,如果這是來自Apple的已知錯誤或者我錯過了某些東西。

希望有人能指出一些事情給我。

謝謝。

+0

把一些代碼。所以我們可以更深入地瞭解。 – 2012-04-19 05:28:49

+0

「每次我們在屏幕上移動鍵盤時,通知對象中的endframe都會變成(0,0,0,0)。在我使用convertFrame座標將幀轉換爲(0,-124,0,0)後, 。這對於鍵盤向上或向下移動都是正確的。 在其他所有情況下,endframe似乎都提供了正確的座標座標。詳細說明 – 2012-04-19 05:31:18

+0

每次我們在屏幕上移動鍵盤時,通知對象中的終端都是(0,0,0,0)。把這一行的一些代碼。 – 2012-04-19 05:36:18

回答

0

我不確定你是否仍然有這個問題,但你錯過了一個通知。當使用開始移動鍵盤時,發送UIKeyboardWillChangeFrame。但是,此時,通知無法爲您提供結束幀,因爲用戶並未停止移動鍵盤。當用戶停止移動鍵盤時,發送另一個通知:UIKeyboardDidChangeFrameNotification(至少它在5.1上)。您應該能夠在該通知中獲得正確的結束幀。