1

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

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

4

3 回答 3

2

您无法将您想要的内容添加到系统提供的键盘中。但是,您可以通过实现自己的自定义键盘来实现您想要的,它可以具有您想要处理长按键的任何方法。请参阅前面的上一个问题作为如何实现自定义键盘的一个示例。

在实现这一点时,您应该使用 iOS 提供的UILongPressGestureRecognizer,而不是检查 touchesEnded 和 touchesBegan 来识别何时发生长触摸。

于 2011-11-30T04:28:29.360 回答
1

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

于 2011-11-30T04:18:57.567 回答
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];
于 2011-11-29T14:46:53.083 回答