接收双击事件

Sci*_*y77 5 macos cocoa objective-c nsevent mouseevent

我一直在搜索Apple文档,我唯一能找到的关于双击的功能只是返回了点击之间的可接受时间,因为它被认为是双击.

有人可以给我看一个双击事件的例子吗?

Jer*_*man 14

覆盖NSResponder方法-mouseUp:并检查提供的事件clickCount.如果clickCount == 2,那么你正在看双击.如果是1,则单击一下.0,然后他们在鼠标按下和鼠标按下之间等待了足够长的时间,系统认为它不是点击,只是向下然后向上事件.

- (void)mouseUp:(NSEvent *)event
{
    NSInteger clickCount = [event clickCount];
    if (2 == clickCount) [self handleDoubleClickEvent:event];
}
Run Code Online (Sandbox Code Playgroud)

这假设处理点击的对象是响应者链的一部分.如果没有,你将不得不以另一种方式获取你的事件,比如子类化NSApplicationNSWindow覆盖,-sendEvent:以便在它进一步传递之前拦截相应的事件.

  • 应该强调的是,这个答案中的"NSResponder"是指Cocoa中的类(NSView,NSWindow和NSApplication继承自),而不是其他自称为自己的回答者. (5认同)