我试图检测用户在打字时触摸键盘上的键的时间,例如,当某个键被按下足够长的时间时,我会弹出一个对话框。
touchesEnded
通过测量和之间的时间来检测常规视图是微不足道的touchesBegan
。但是,我没有收到来自键盘的任何事件。关于如何从键盘接收touchesEnded
和事件的任何想法?touchesBegan
我试图检测用户在打字时触摸键盘上的键的时间,例如,当某个键被按下足够长的时间时,我会弹出一个对话框。
touchesEnded
通过测量和之间的时间来检测常规视图是微不足道的touchesBegan
。但是,我没有收到来自键盘的任何事件。关于如何从键盘接收touchesEnded
和事件的任何想法?touchesBegan
您无法将您想要的内容添加到系统提供的键盘中。但是,您可以通过实现自己的自定义键盘来实现您想要的,它可以具有您想要处理长按键的任何方法。请参阅前面的上一个问题作为如何实现自定义键盘的一个示例。
在实现这一点时,您应该使用 iOS 提供的UILongPressGestureRecognizer,而不是检查 touchesEnded 和 touchesBegan 来识别何时发生长触摸。
我不相信你能做到这一点(尤其是在 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];