2015-01-05 117 views
0

我正在構建一個NSStatusBar應用程序,並且要根據用戶在圖標上單擊左鍵還是右鍵來調用不同的功能。Swift:右鍵/左鍵單擊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的每一次點擊。我如何區分mouseEvents?

回答

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鍵。這是該方法的地方是從一個菜單項稱爲像這樣:

let item = NSMenuItem(title: title, action: Selector("menuSelected:"), keyEquivalent: "") 
+0

見NSEvent.pressedMouseButtons –

+0

可否請你增加了一些評論你的代碼?不幸的是我不明白那裏發生了什麼。我不知道該把它放在哪裏,因爲我沒有IBAction。 – ixany

+0

我也看了一下NSEvent,但沒有運氣得到左/右出。會多嘗試一下。我使用Ctrl鍵單擊以獲取狀態欄的不同點擊變體。 –