Swift3 ViewControllerでキーイベント(keyDown)を捕捉する

ViewControllerでキーイベントを捕捉するのはよくあると思う。以前はSwift2の時に書いたが、 Swift3ではkeyDownoverrideするだけではダメなようだ。

参考: 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

勉強用図書:

詳解Swift 第3版
詳解Swift 第3版
posted with amazlet at 17.03.21
荻原 剛志
SBクリエイティブ
売り上げランキング: 68,208
タイトルとURLをコピーしました