检测iPad键盘隐藏与外部键盘连接?

时间:2010-05-20 16:30:19

标签: iphone ipad keyboard

iPad虚拟键盘将在(至少)这三种情况中消失:

  1. 如果控件(例如,UITextField)以编程方式取消第一响应者。
  2. 如果用户点击右下角的“关闭键盘”按钮。
  3. 如果用户连接USB /键盘底座外围设备。
  4. 在所有情况下,我都会获得UIKeyboardWillHideNotification

    问题是前两种情况通常是等价的 - 换句话说,用户完成了对文本字段的编辑。但在第三种情况下,文本字段仍在编辑中,只是来自另一个输入源。

    问题在于检测案例2和3之间的区别。我在两种情况下都得到UIKeyboardWillHideNotification。在案例2中,我通常还想锁定编辑控件并提交值。在案例3中,我通常不想做任何事情并允许继续编辑。

    但我怎么能区分呢?

    Apple的Pages应用程序似乎能够在文档标题重命名上区分它。

2 个答案:

答案 0 :(得分:2)

我会查看通过通知传递的UIKeyboardBoundsUserInfoKey。物理键盘可能有空边界。

答案 1 :(得分:2)

听起来你只想弄清楚用户何时完成编辑。您可以听取案例1和2的UITextFieldTextDidEndEditingNotification通知。

一个更简单的解决方案是,你不能只检查editing的{​​{1}}属性,以确定它是否仍然应该编辑?我没有物理键盘,所以我无法测试这个。我只是在猜测。

以下是该属性文档的链接:http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UITextField_Class/Reference/UITextField.html#//apple_ref/occ/instp/UITextField/editing

我很想知道这是否有效...... :)