我正在尝试检测用户是否快速按键盘键两次,双击。按下键是一个NSEvent,并被这种方法捕获:
- (void)sendEvent:(NSEvent *)theEvent
{
NSString* keysPressed = [theEvent characters];
if ( [keysPressed isEqualToString:@" "] )
{
if(theEvent.type==NSKeyDown)
NSLog(@"spaceDown");
if(theEvent.type==NSKeyUp)
NSLog(@"spaceUp");
}
}
日志语句确实在按下并释放空格键时出现,但现在我想检测用户是否双击空格键,并将其与两次单独按下区分开来。我想我们必须为此创建一个自定义解决方案。
如何检测两个空格键按键事件是否相隔0.3秒(从而使其成为双按),然后在满足该条件时执行某个操作?
答案 0 :(得分:1)
至少有两种可能的解决方案。
BOOL doubleKeypress = YES
,然后点燃NSTimer
点火延迟0.3
以设置doubleKeypress = NO
。在这两种情况下,您都需要确保只检查以前按该键的内容,因此可以将BOOL
s或时间与关联的keyCode
一起存储来自NSEvent
。
由于您只能检测到双按键,因此您只需要跟踪1个先前的按键,因此您可以随时覆盖现有的“上一个事件”。如果你开了一个双键按钮,请务必将其设置为nil
(否则你将在3个按键中触发2个双键事件等)!