2017-09-02 7 views
1

NSViewControllerでキーボード入力を検出したいと思います。 ユーザーが特定のキーを押してからENTER/RETURNを押すと、いくつかのアクションが実行されます。NSViewControllerのkeyboad入力を迅速に検出するためのベストプラクティス

keyDownが適切な方法であるかどうかを確認しました。しかし、ユーザーがキーを押すたびにイベントを受信します。

NSTextFieldを使用している場合は、非表示に設定してフォーカスを持たせてください。 しかし、おそらく他の優れたソリューションがあります。

アイデア?

ありがとうございました

答えて

0

私は最終的に私が好きな解決策を得ました。 最初に、隠されたUI要素を持つことはできませんが、ビューコントローラがキーボード入力を検出できるようにします。

var monitor: Any? 
var text = "" 
override func viewDidLoad() { 
    super.viewDidLoad() 
    self.monitor = NSEvent.addLocalMonitorForEvents(matching: .keyDown, handler: myKeyDownEvent) 
} 

override func viewWillDisappear() { 
    //Clean up in case your ViewController can be closed an reopened 
    if let monitor = self.monitor { 
     NSEvent.removeMonitor(monitor) 
    } 
} 

// Detect each keyboard event 
func myKeyDownEvent(event: NSEvent) -> NSEvent { 
    // keyCode 36 is for detect RETURN/ENTER 
    if event.keyCode == 36 { 
     print(text) 
     text = "" 
    } else { 
     text.append(event.characters!) 
    } 
    return event 
} 
関連する問題