2017-04-06 8 views
5

私はmacOSアプリケーションで作業しており、NSViewControllerにローカルホットキーイベント(コマンド+上矢印キー)を処理したいと考えています。ここでCocoaキーボードコマンドを聞く+ upイベント

は、私はスウィフトでそれを行う方法は次のとおりです。

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; 
    } 
} 

私が構築し、プレスコマンドは+アップビューで、コンソールには何も表示されません。しかし、コマンド+ Bを押すと、「コマンドB」がログアウトされます。

これはなぜCommand +の上で動作しないのですか?私はこれをどのように達成すべきですか?

私は解決策見つけた

答えて

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イベントイベントを中断し、

nilを返すことによって派遣されるのを防ぐためですが
関連する問題