如果检测到双击,是否可以忽略第一次单击?
下面的示例仍然会在two clicks
之前记录one click
。如果有双击事件,我想忽略单个点击。
- (void)mouseUp:(NSEvent *)theEvent {
if (theEvent.clickCount > 1) {
NSLog(@"two clicks %ld", theEvent.clickCount);
} else {
NSLog(@"one click %ld", theEvent.clickCount);
}
}
这样做的目的,是当用户在一个NSView
我想执行一个方法,使另一个视图或窗口出现。但是,如果用户双击NSView
内部,那么我希望出现不同的视图或窗口。以下步骤概述了此工作流程:
- 用户点击
NSView
使ViewA出现 - 用户双击
NSView
使ViewB出现
我遇到的问题是始终检测到单次单击,因此ViewA将始终出现。但是我不希望在双击时显示ViewA,我只希望在双击时显示ViewB。
除非您可以回到过去,否则您将需要以某种方式取消之前的单点事件。
-
最简单的方法:延迟单点事件的执行,如果检测到双击则取消执行。
[self performSelector:@selector(singleTap) withObject:nil afterDelay:[NSEvent doubleClickInterval]]; /// cancel out [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(singleTap) object:nil];
-
或者,您可以立即执行单点动作,如果检测到双击,则编写代码取消。这应该也很容易。因为,如果这很难,可能是你的用户体验设计出了问题。