2010-05-20 170 views
17

iPad的虛擬鍵盤將在(至少)三種情況消失:檢測iPad鍵盤隱藏與外部鍵盤連接?

  1. 如果控制(比如,爲UITextField)編程辭職第一響應。
  2. 如果用戶點擊右下方的「解除鍵盤」按鈕。
  3. 如果用戶連接到USB /鍵盤擴展塢。

在所有情況下,我得到UIKeyboardWillHideNotification

問題是,前兩種情況通常是等同的 - 換句話說,用戶已經完成編輯文本字段。但在第三種情況下,文本字段仍在編輯中,僅來自另一個輸入源。

問題是檢測情況2和3之間的區別。我在這兩種情況下都得到的是UIKeyboardWillHideNotification。在情況2中,我通常也想鎖定編輯控件並提交值。在情況3中,我通常不想做任何事情,並允許編輯繼續。

但是,我該如何區分?

Apple's Pages應用程序似乎能夠區分文檔標題重命名。

回答

2

我會看看隨通知一起傳遞的UIKeyboardBoundsUserInfoKey。物理鍵盤可能有空邊界。

+0

遺憾的是沒有。物理鍵盤在出現時不會生成UIKeyboardWillShowNotification。附加它只會產生一個與虛擬相對應的WillHide通知。 – 2010-05-20 18:28:30

+0

在情況1中,控制失去焦點。情況2也一樣嗎?我假設情況3控制權保留焦點。 – drawnonward 2010-05-21 09:47:14

+0

在情況2和3中,控件繼續爲firstResponder。辭職的第一響應者會解僱鍵盤,但相反的情況並非如此。 – 2010-05-21 19:52:57

2

這聽起來像你只是想弄清楚用戶完成編輯。你可以聽的情況下,1 UITextFieldTextDidEndEditingNotification通知和2

一個更簡單的解決方案是不能你只是對證的UITextFieldediting屬性,以確定它是否仍然應該被編輯或不?我沒有物理鍵盤,所以我無法測試它。我只是猜測。

下面是對文件的鏈接該屬性:http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UITextField_Class/Reference/UITextField.html#//apple_ref/occ/instp/UITextField/editing

我很好奇,想知道這是否正常工作或不... :)

+0

對於案例#2,文本字段仍在編輯,它仍然是第一響應者。沒有鍵盤。 – 2010-08-31 20:00:22