私は、NSWindowのサブビューとしてIKImageBrowserViewコンポーネントの使用を特徴とするプログラムを構築しています。補助ノートとして、ImageBrowserControllerというNSWindowをサブクラス化し、私のアプリケーションのNSWindowオブジェクトの代理人として設定されているコントローラオブジェクトがあります。NSWindowオブジェクトにNSWindowサブクラスである代理人がいる場合、受信したイベントを処理するのは誰ですか?
IKImageBrowserViewにメッセージsetCanControlQuickLookPanel:YESを送信して、IKImageBrowserViewがキーイベントを受信する最初のレスポンダである場合にQuickLook機能を使用して画像ファイルをプレビューするようにしました。それから、IKImageBrowserViewを最初にレスポンダにする方法を理解するのにはしばらく時間がかかりました。ImageBrowserControllerの中でacceptsFirstResponderをオーバーライドして最終的に作業しています。
NSWindowの代理人として、ImageBrowserControllerには、イベントがNSWindowでトリガーされた後のレスポンダチェーン内の場所があることを理解しています。そして、私はNSWindowのサブビューとして、IKImageBrowserViewがイベント処理のために渡されるイベントであることを理解しています。私が得られないのは、最初のレスポンダーであることと、何らかの形でIKImageBrowserViewに接続していることの間の接続です。ImageBrowserControllerです。 NSWindowまたはIKImageBrowserViewを最初のレスポンダとして明示的に設定しませんでした。だから私はなぜ私の内部でイベント処理を実装する必要はありませんImageBrowserController?
EDIT:受け入れ答えはそれだろうと述べただけのようだから受け入れ答えを読んで、私は私のImageBrowserControllerとクイックルック機能でacceptsFirstResponderオーバーライドを削除しようとした私のコードに戻った後も引き起こしました。 setCanControlQuickLookPanel:YESをコメントアウトすると、スペースバーを使ってQuickLook機能を呼び出そうとしたときに、私にビープ音が鳴りました。私の問題は、自分のコード(sigh)に変更を加えた後に、[BUILD]ボタンの代わりに[RUN]ボタンを押したときのXcodeのユーザエラーによって引き起こされたと感じています。
@ josh-caswell - 答えをありがとう。あなたのご意見は、私が誤解していたことを理解するのに役立ちました。 – spade78
素晴らしい!あなたがすでに知っていたことを私があなたに伝えているかどうかは完全にはわかりませんでした。それがうれしかったのでうれしいです。 –