2015-01-05 3 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

이 스 니펫 Ctrl 키에 대한 내 코드 검사에서

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 
} 

.

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

참조 NSEvent.pressedMouseButtons –

+0

당신이 당신의 코드에 어떤 주석을 추가 시겠어요 : 그것은이 같은 메뉴 항목에서 호출되는 방법에 장소? 불행히도 나는 거기에서 무슨 일이 일어나고 있는지 이해하지 못한다. 나는 IBAction이 없기 때문에 그것을 놓을 곳이 확실하지 않습니다. – ixany

+0

나는 NSEvent도 들여다 보았지만 왼쪽/오른쪽으로 운이 좋았습니다. 조금 더 노력할 것입니다. Ctrl 키를 누른 상태에서 클릭하면 상태 막대에 다른 클릭 변형이 나타납니다. –

관련 문제