2017-04-06 3 views
5

macOS 앱에서 작업 중이고 NSViewController에 로컬 단축키 이벤트 (command + 위쪽 화살표 키)를 처리하고 싶습니다. 여기코코아 키보드 명령 듣기 + 위로 이벤트

내가 스위프트와 함께 할 방법은 다음과 같습니다

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를 누르면 "command 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 이벤트를 중단하고 무기 호

을 반환하여 파견되지 않도록하는 것입니다