6

我一直在搜索 Apple 文档,我能找到的唯一与双击有关的函数只是返回了两次单击之间可接受的时间,以便将其视为双击。

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

4

3 回答 3

16

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

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

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

于 2011-08-19T23:17:26.187 回答
4

请参阅 NSEvent 的-clickCount方法。

于 2011-08-19T23:18:40.390 回答
2

另请注意,有些NSControl已经setDoubleAction:将通过注册的选择器setDoubleAction:发送到目标。见官方文档

于 2011-08-20T06:14:41.840 回答