13

NSViewController がキーとマウスのイベントを受け入れるようにする方法を理解し、情報を見つけるのに苦労しています。これらのイベントを NSViewController に登録するには、レスポンダーチェーンに追加する必要があることをどこかで読みましたが、これを適切に行う方法がわかりません。

どんな種類の助けも大歓迎です!

4

4 に答える 4

9

CocoaWithLove.comに素敵なチュートリアルがあります。

要約すると、NSView のサブクラス ("EugeneView" など) を作成すると、そのサブクラスに " setNextResponder" や " "などの追加のメソッドが含まれsetViewControllerます。そして、これら 2 つのメソッドを実行すると、NSViewController がレスポンダー チェーンに統合されます。

于 2013-11-19T01:05:16.197 に答える
1

デバッグ中。NSViewControllerviewが最初の応答者を受け入れないことに気付きました。

印刷で確認できますprint(viewController.view) //false

NSViewController をレスポンダー チェーンに追加するには、そのビューをacceptFirstReponder. これは、NSView の拡張機能を作成し、その拡張機能をオーバーライドすることで簡単に実行できます。acceptFirstResponder

extension NSView{
    //making view acceptFirstResponder by default,
    //this will enable NSViewController receive responder event dispatched into responder chain
    open override var acceptsFirstResponder: Bool{return true}
}

これにより、コントローラーがレスポンダー チェーンに追加され、すべてのレスポンダー イベントを受け取ります。

私は Cocoa を初めて使用するので、私の説明はあまり正確ではないかもしれません。しかし、ソリューションは完全にうまく機能します。

ViewController がonKeyDownイベントを受信しないという問題を解決するためにこれを行いました。

于 2020-03-19T15:43:23.893 に答える