如何检测iPhone屏幕键盘上的触摸



我试图检测用户在打字时触摸键盘上的键的时间,以便,例如,当某个键被按了足够长的时间时,我弹出一个对话框。

通过测量touchesEndedtouchesBegan之间的时间来检测常规视图的这一点是微不足道的。但是,我没有收到来自键盘的任何事件。关于如何从键盘接收touchesEndedtouchesBegan事件有什么想法吗?

您不能向系统提供的键盘添加您想要的东西。然而,您可以通过实现您自己的自定义键盘来实现您想要的,它可以具有您想要的任何方法来处理长按键。参见前面这个问题,作为如何实现自定义键盘的一个示例。

当实现这个时,而不是检查touchesEnded和touchesBegan来识别何时发生长触摸,你应该使用ios提供的UILongPressGestureRecognizer

我不相信你能做到这一点(特别是在App Store应用程序中),因为系统本身有额外的菜单,它会在按住某些键时显示,甚至可能没有屏幕键盘(蓝牙键盘)。

将这些侦听器添加到TextField

// editing began:
[textField addTarget:self action:@selector(textFieldEditingDidBegin:) forControlEvents:UIControlEventEditingDidBegin];
// editing changed:
[textField addTarget:self action:@selector(editingChanged:)forControlEvents:UIControlEventEditingChanged];
// editing ended: 
[textField addTarget:self action:@selector(editingDidEnd:) forControlEvents:UIControlEventEditingDidEnd];

你也可以使用这些通知来知道键盘何时显示和隐藏:

// keyboard shows on screen:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow) name:UIKeyboardDidShowNotification object:nil];
// keyboard is hidden:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide) name:UIKeyboardDidHideNotification object:nil];

最新更新