我正在尝试检测用户在键入时触摸键盘上的键的时间长度,例如,当按下某个键足够长的时间时,我会弹出一个对话框。
通过衡量touchesEnded
和touchesBegan
之间的时间来检测常规视图是非常简单的。但是,我没有收到键盘上的任何事件。关于如何从键盘接收touchesEnded
和touchesBegan
事件的任何想法?
答案 0 :(得分:2)
您无法将所需内容添加到系统提供的键盘中。但是,您可以通过实现自己的自定义键盘来实现您想要的功能,键盘可以使用您想要处理长按键的任何方法。请参阅previous this previous question,了解如何实施自定义键盘。
实现此功能时,不应检查touchesEnded和touchesBegan以确定何时发生长时间触摸,而应该是iOS提供的UILongPressGestureRecognizer。
答案 1 :(得分:1)
我不相信你能够做到这一点(特别是在App Store应用程序中),因为系统本身在按住某些键时会显示额外的菜单,甚至可能没有屏幕键盘(蓝牙键盘)。
答案 2 :(得分:0)
将这些添加到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];