你能在mouseDown事件中检测到ctrl-click(上下文菜单)请求吗?

时间:2008-10-22 22:40:47

标签: objective-c cocoa macos

在我的跨平台架构中,我想在鼠标单击事件期间单击上下文菜单(右键单击)。在Cocoa中,您可以在mouseDown事件期间检测到用户在触摸板上按住Ctrl键单击或双击(右键单击等效项)吗?我知道NSView的menuForEvent,但不希望在这里处理它。

3 个答案:

答案 0 :(得分:15)

一般情况下,-rightMouseDown:应该自动调用,但我已经看到了不是这样的情况 - 这些可以在Leopard中修补。

但是现在,在-mouseDown:我使用以下代码检查控制键是否关闭:

- (void)mouseDown:(NSEvent *)event;
{
    if (event.modifierFlags & NSControlKeyMask)
        return [self rightMouseDown:event];

...
}

-Wil

答案 1 :(得分:13)

如果您正在使用AppKit,并且想要在视图中检测到右键单击,则应覆盖-[NSResponder rightMouseDown:]

答案 2 :(得分:1)

Swift版本:

override func mouseDown(theEvent: NSEvent) {
    if theEvent.modifierFlags.contains(.ControlKeyMask) {
        return rightMouseDown(theEvent)
    }

    super.mouseDown(theEvent)
}