如果发生双击,忽略单个单击方法



如果检测到双击,是否可以忽略第一次单击?

下面的示例仍然会在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。

除非您可以回到过去,否则您将需要以某种方式取消之前的单点事件。

  1. 最简单的方法:延迟单点事件的执行,如果检测到双击则取消执行。

    [self performSelector:@selector(singleTap) withObject:nil afterDelay:[NSEvent doubleClickInterval]];
    /// cancel out
    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(singleTap) object:nil];
    
  2. 或者,您可以立即执行单点动作,如果检测到双击,则编写代码取消。这应该也很容易。因为,如果这很难,可能是你的用户体验设计出了问题。

相关内容

  • 没有找到相关文章

最新更新