2015-01-05 6 views
0

Я создаю приложение NSStatusBar и хочу использовать различные функции в зависимости от того, нажал ли пользователь на значок слева или справа.Swift: Right/Left click on 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-click, чтобы получить разные варианты кликов для строки состояния. –

 Смежные вопросы

  • Нет связанных вопросов^_^