2013-07-22 125 views
2

我需要一種方法來檢測用戶手動解除iOS鍵盤使用鍵盤上的「鍵盤」按鈕時的情況。我試圖使用UIKeyboardDidHideNotification,但很快發現,當用戶拆分鍵盤時,該事件也會被觸發,並將其留在屏幕上。
有沒有辦法確定鍵盤確實隱藏?有沒有辦法知道iOS鍵盤真的被隱藏(被用戶解僱)?

回答

1

要獲得解決辦法,我只好稍微修改我原來的執行:我把它換成分配nilinputView我的主視圖的成員與創建和銷燬自定義隱形UIView<UIKeyInput>視圖相應地顯示和隱藏鍵盤。這使我可以覆蓋此視圖的resignFirstResponder方法,它是總是調用鍵盤辭職 - 無論是在正常狀態還是在拆分狀態,當用戶使用特殊按鈕解除鍵盤鎖定或當我以編程方式刪除鍵盤時。

0

我相信UIKeyboardDidHideNotification只有當鍵盤真正消失時纔會發送。來自Apple docs

解除鍵盤後立即發佈。

但是,你也可以看看,如果你的任何輸入是當前的第一響應者:

BOOL keyboardUp = NO; 

for (UIView *view in self.textInputs) 
{ 
    if (view.isFirstResponder) 
    { 
    keyboardUp = YES; 
    break; 
    } 
} 
+1

當在iPad上分離鍵盤時'UIKeyboardDidHideNotification'也被觸發,儘管文檔沒有提及這一點。 –

+0

並且萬一鍵盤已經分裂,當鍵盤被解散時,永遠不會觸發'UIKeyboardDidHideNotification'。 – leo

+0

對於鍵盤交互,我使用自定義的'UIView'實現總是第一響應者的'UIKeyInput'協議。爲了顯示和隱藏鍵盤,我相應地用'nil'或自定義不可見視圖修改'inputView'成員。 – leo