接收双击事件

时间:2011-08-19 23:00:44

标签: objective-c macos cocoa mouseevent nsevent

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

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

3 个答案:

答案 0 :(得分:14)

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

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

这假设处理点击的对象是响应者链的一部分。如果没有,您将不得不以另一种方式获取您的活动,例如继承NSApplicationNSWindow并覆盖-sendEvent:以拦截相应的事件,然后再传递给它。

答案 1 :(得分:2)

请参阅NSEvent的-clickCount方法。

答案 2 :(得分:2)

另请注意,某些NSControl具有setDoubleAction:,因此通过setDoubleAction:注册的选择器会发送到目标。

的官方文件