メイン ウィンドウのトップレベルのキー イベントを処理したいと考えています。私の理解は正しいですか?
サブクラスを作成して
NSWindowController
そのイベントをオーバーライドしkeyDown
(コントローラーはレスポンダー チェーンの一部であるため)、メイン NIB のファイル所有者をそのコントローラー クラスに設定します。ここで、メイン ウィンドウは の内臓で作成され、NSApplicationMain
ウィンドウの所有者はNSApplication
無条件に設定されているため、これを放棄してプログラムで を使用してメイン ウィンドウを作成し、initWithWindowNibName:
ボイラープレートを作成してデリゲートを設定し、ウィンドウを表示するなどの作業を行う必要があります。もう1つの可能性は
NSWindow
、クラスをサブクラス化し、そのイベントをオーバーライドして、keyDown
メインウィンドウのクラスをそれに設定することですが、それには多くの問題があります。実際にイベントで何かを行うには、ウィンドウ内のすべてのアウトレットが必要であり、それは一種の独自のものになりますコントローラ。
この時点で、一見単純な問題を解決するために極端なヤクの毛刈りに取り組んでいます。これは、私の Cocoa の経験が浅いためではないかと思いますが、それを行うより適切な方法はありますか? こういうアクロバットは本当にやらなくていい気がします。
PS
performKeyEquivalent
これは、私が知る限り、 だけでなく にも当てはまりますkeyDown
。