1

私はココアプログラミングにかなり慣れていないので、 -(BOOL)makeFirstResponder:(NSResponder *)responder;メソッドの仕組みを説明できる人がいるかどうか尋ねたいと思います。私はそれを使用することを計画していましNSEventたが、誰かがそれを実装する方法を教えてもらえますか?

NSResponderクラスを使用して、機能-keyDownするメソッドを取得しようとしています。

4

3 に答える 3

3

NSResponder は、Cocoa の基本クラスの 1 つです。キーの押下やメニュー コマンドなどのイベントに応答できるクラスは、NSResponder のサブクラスにする必要があります。各レスポンダーはその「次のレスポンダー」を追跡し、各ウィンドウは現在「最初のレスポンダー」であるオブジェクトを追跡します。ウィンドウでイベントが発生すると、最初の応答者にメッセージが送信されます。そのオブジェクトがメッセージを処理する場合、素晴らしいです。そうでない場合は、それを次のレスポンダーに渡します。これは「レスポンダーチェーン」として知られています。

通常、Cocoa のレスポンダー チェーンをいじることはあまりありません。ファーストレスポンダーは、コントロールのクリックなど、ユーザーの操作によって主に決定されます。

「NSEvent に使用する」のは意味がありません。NSEvent はレスポンダーではありませんが、レスポンダーが仕事を行えるようにするものです。

達成しようとしていることをより明確に説明していただければ、正しい方向に導くことができると確信しています。

于 2011-04-01T19:46:10.123 に答える
2

通常は を実装せず、-makeFirstReponder:それを呼び出して入力フォーカスをビューに設定します。あなたが本当に達成したいことは何ですか?

于 2011-04-01T19:38:22.013 に答える
1

NSResponder クラスを使用して、機能する keyDown メソッドを取得しようとしています。

それは意味がありません。クラスを「使う」?

主要なイベントに応答したい場合は、通常、ファーストレスポンダーになることができるビューでそれを行う必要があります ( NSView のドキュメントを参照してください)。

Event-Handling GuideView Programming Guide 、およびWWDC 2010 セッション ビデオのセッション 145 (「Key Event Handling in Cocoa Applications」) のビデオも参照してください。昨年の WWDC には行きませんでした)。

于 2011-04-02T11:57:55.710 に答える