0

我正在构建一个NSStatusBar应用程序,并希望根据用户在图标上单击左键还是右键来调用不同的函数。

这是我到目前为止所拥有的:

let statusItem = NSStatusBar.systemStatusBar().statusItemWithLength(-1)

func applicationDidFinishLaunching(aNotification: NSNotification) {
    let icon = NSImage(named: "statusIcon")
    icon?.setTemplate(true)

    statusItem.image = icon
    statusItem.menu = statusMenu
}

有了这个statusMenu,每次点击都会显示出来。如何区分鼠标事件?

4

1 回答 1

0

这个片段

func menuSelected (sender:AnyObject) {
  var clickMask: Int = 0
  if let clickEvent = NSApp.currentEvent! {  // see what caused calling of the menu action
    // modifierFlags contains a number with bits set for various modifier keys
    // ControlKeyMask is the enum for the Ctrl key
    // use logical and with the raw values to find if the bit is set in modifierFlags
    clickMask = Int(clickEvent.modifierFlags.rawValue) & Int(NSEventModifierFlags.ControlKeyMask.rawValue)
  }
  if clickMask != 0 { ... } // click with Ctrl pressed
}

从我的代码中检查是否有 ctrl-click。它位于从这样的菜单项调用的方法中:

let item = NSMenuItem(title: title, action: Selector("menuSelected:"), keyEquivalent: "")
于 2015-01-05T15:27:28.910 回答