2017-04-06 33 views
5

我工作的一個MacOS的應用程序,我想處理的NSViewController本地熱鍵事件(命令+向上箭頭鍵)。可可聽鍵盤命令+向上事件

這是我如何與斯威夫特做到這一點:

override func keyDown(with event: NSEvent) { 

    let modifierkeys = event.modifierFlags.intersection(.deviceIndependentFlagsMask); 
    let hasCommand = modifierkeys == .command; 

    switch Int(event.keyCode) { 
    case kVK_UpArrow where hasCommand: 
     print("command up"); 
     break; 
    case kVK_ANSI_B where hasCommand: 
     print("command B"); 
     break; 
    default: 
     break; 
    } 
} 

當我建立並按下Command +向上的觀點,在控制檯顯示什麼。但是當我按下命令+ B時,「命令B」被註銷。

那麼,爲什麼不是這個工作的命令+嗎?我應該如何實現這一目標?

回答

3

我已經找到了解決辦法:

self.keyMonitor = NSEvent.addLocalMonitorForEvents(matching: NSEventMask.keyDown, handler: { (event) -> NSEvent? in 

    if (event.modifierFlags.contains(.command)){ 
     if (Int(event.keyCode) == kVK_UpArrow){ 
      print("command up"); 
      return nil; 
     } 
    } 

    return event; 

}); 

關鍵的一點是要中斷keydown事件,並防止它通過返回零

分派
相關問題