ViewController
でキーイベントを捕捉するのはよくあると思う。以前はSwift2
の時に書いたが、
Swift3
ではkeyDown
をoverride
するだけではダメなようだ。
参考: osx - Swift - Capture keydown from NSViewController - Stack Overflow
viewDidLoad()
でイベントを監視するように設定する必要がある。
こんな感じで:
class ViewController: NSViewController {
override func viewDidLoad() {
super.viewDidLoad()
// keyDownイベントを捕捉する
NSEvent.addLocalMonitorForEvents(matching: .keyDown) { (event) -> NSEvent? in
self.keyDown(with: event)
return event
}
}
override func keyDown(with event: NSEvent) {
print("key press: \(event)")
}
}
Swift2
の時の記事: Swift キーボード入力のイベントをハンドルする - ikap
勉強用図書:
コメント