2

假设我有一个按钮..如果它们都调用我的 IBAction,我如何区分单击和双击?有没有办法知道是哪个事件导致了呼叫,或者为每种类型的事件设置不同的操作?

4

3 回答 3

3

编辑:

在 Cocoa 中,afaik,每个控件都有一种它响应的“固定”事件。要管理双击,您应该覆盖方法mouseUpmouseDown,您将在其中获得有关点击次数的信息。

- (void)mouseUp:(NSEvent*)event {
    NSInteger count = [event clickCount];
    <do_something_depending_on:count];
}

旧答案:

您可以通过在 Interface Builder 中显示控件的操作选项卡,然后将正确的事件类型连接到您的控制器操作,来定义与同一控件关联的多个 IBAction。看一下附图,希望它更清楚。它显示可用于按钮的事件。

在此处输入图像描述

于 2012-06-30T11:54:44.973 回答
1

您可以向应用程序询问当前正在处理什么事件;对于鼠标点击,这将包括点击计数

请注意,即使是按钮也可能因为鼠标点击以外的原因触发其动作,例如全键盘访问(聚焦按钮并按下空格键)或 VoiceOver(将 VO 光标放在按钮上并使用按下动作),所以不要不要假设你的动作是为了响应鼠标而被调用的。

于 2012-06-30T17:02:49.603 回答
0

如果我理解正确,您应该为一次单击创建两个不同的 IBAction,使用 UIControlEventsTouchUpInside 和两次单击 UIControlEventsTouchDownRepeat(控件中的重复触摸事件;对于此事件,UITouch tapCount 方法的值大于一。)

于 2012-06-30T11:48:43.190 回答