Objective c 接收双击事件

Objective c 接收双击事件,objective-c,macos,cocoa,mouseevent,nsevent,Objective C,Macos,Cocoa,Mouseevent,Nsevent,我一直在搜索苹果文档,我能找到的关于双击的唯一功能只是返回了可以接受的两次点击之间的时间间隔,这被认为是双击 有人能给我看一个双击事件的例子吗?覆盖NSResponder方法-mouseUp:并检查提供的事件的点击次数。如果clickCount==2,则您看到的是双击。如果为1,则单击一次。0,然后他们在鼠标向下和鼠标向上之间等待了足够长的时间,系统决定这不是单击,而是不同的向下和向上事件 - (void)mouseUp:(NSEvent *)event { NSInteger clic

我一直在搜索苹果文档,我能找到的关于双击的唯一功能只是返回了可以接受的两次点击之间的时间间隔,这被认为是双击


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

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

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

这假定处理单击的对象是响应者链的一部分。如果没有,你就得换一种方式,类似于子类化
NSApplication
NSWindow
并重写
-sendEvent:
,以便在进一步传递之前拦截适当的事件。

请参阅NSEvent的
-clickCount
方法。

还请注意,一些
NSControl
具有
设置doubleAction:
,以便选择器通过
setDoubleAction注册:
发送到目标。见官方文件

  • ,
  • ,
  • ,
  • ,

@Dashwuff OSX(请参阅标签)@Dashwuff:iOS也没有点击。对,我想知道您是否在iOS上寻找(可能不存在?)双击事件。应该强调的是,此答案中的“NSResponder”指的是Cocoa中的类(NSView、NSWindow和NSApplication继承自该类),不是以事件命名的其他应答者。事件(NSEvent对象)未传递给目标;操作消息被发送到目标,但是,与操作消息的通常情况一样,单个参数是发送消息的控件(表视图或其他)。我肯定你不是指NSEvent对象,但我想确保这是清楚的;我会重新措辞。谢谢。在我的例子中,在10.10之前的操作系统上运行时,我必须为NSTableView设置一个目标,但是10.10在没有设置目标的情况下运行正常(在我的例子中是self)