当控制键关闭时,mouseDown事件在哪里发生?

时间:2016-06-06 15:43:45

标签: macos nsevent nscombobox

由于多种原因,我已经将NSComboBox子类化,包括显示上下文菜单的策略,而操作系统不向他们添加任何神秘的东西。 (“将iTunes添加为语音轨道”???)以下是我的鼠标事件方法:

public override func    mouseDown (event: NSEvent) 
  { NSLog("mouseDown")
    if NSEvent.modifierFlags().contains(.ControlKeyMask)     
      { self.rightMouseDown(event) }  
    else  
      { super.mouseDown(event) }
  }

public override func    rightMouseDown (event: NSEvent) 
  { NSLog("rightMouseDown")
    super.menu?.delegate = self
    super.menu?.allowsContextMenuPlugIns = false
    super.menu?.popUpMenuPositioningItem(nil, atLocation:
       self.convertPoint(event.locationInWindow, fromView: nil), inView: self)
  }

rightMouseDown方法执行我想要的最后一秒菜单配置。我认为(左)mouseDown方法也可以工作(它只是因为ctrl-left-click是右键单击的传统替代方法),除了控制键向下它永远不会看到鼠标事件。事件似乎通过绕过而不是通过我的子类进入超类,因为NSComboBox确实显示了一个菜单,而不是我想要的菜单(并且菜单委托不正确等)。

我怀疑从Apple Apple鼠标只有一个按钮的时代开始,ctrl-left-clicks存在某种遗留传播路径。如果我知道这些事件的指向(我不认为他们会去我的NSPanel),我可能会拦截他们。有谁知道他们去哪儿了? NSEvent文档中有什么东西我正盯着而不是看到吗?

0 个答案:

没有答案