2011-01-10 7 views
16

私はレスポンダチェーンについて読んで、基本的には、UIからのイベントがレスポンダチェーン上でどのように受け継がれているか、それらをどのように処理するのか、どのようにして渡すのかについて読んでいます。私も-becomeFirstResponderと-resignFirstResponderを使用しましたが、iOS上でキーボードを表示したり、揺れイベントを処理したりするなど、基本的な作業にのみ使用していました。"First Responder"はxibファイルでどのように使用できますか?

私が知りたいのは、Xcodeが生成するMainWindow.xibで "First Responder"プロキシオブジェクトを使用する方法です。私は受け取ったアクションをいくつか見て、アイデンティティ・インスペクタ・タブでアクションを作成することもできます。

私はこれらのアクションをどのように使用できますか?この代理オブジェクトをいつ使用する必要がありますか?!事前に

Interface Builder Screenshot

感謝。

+0

実際に最初にそのプロキシオブジェクトは何ですか?ボタン?何? –

答えて

3

アクションが送信されるときに特定のオブジェクトに関係なく、アクションを最初のレスポンダに送信する場合は常に、アクションのターゲットとしてFirst Responderを使用します。

デスクトップココアでは、最初のレスポンダを対象とするメッセージは、実際にはnilターゲットアクションです。ターゲットは最初のレスポンダであるFirst Responderとして暗黙的に理解されません。

多くの場合、テキストアクションは最初のレスポンダに送られます。どのテキストフィールドにフォーカスがあるかにかかわらずキー押下を送信したいが、フォーカスがあるテキストフィールドは、ビューとアプリケーションの存続期間にわたって変化する。テキストフィールドにフォーカスが入るたびに手動でアクションのターゲットを変更することができますが、NSResponderのおかげで、すべてのことが面倒です。

+1

答えJeremyをありがとう。 iPhoneの場合、この機能はあまり使われていないようです(少なくとも私はこれまでのところ使用できません)... – Moszi

+0

"起こっている"というオブジェクトはどういう意味ですか?オブジェクトは、アクションが送信された時点で発生します。アクションが送信されると、多くのオブジェクトがあります。どれ? –

+0

@JimThioアクションが送信されたときの最初の応答者。多くのオブジェクトが存在する可能性がありますが、任意の時点でウィンドウ内に最初の応答者は1人しか存在できません。 –

7

最初のレスポンダオブジェクトにアクションを割り当てることは、プログラムでnilターゲットを持つコントロールにアクションを追加することと同じです。アクションがトリガーされると、アプリケーションはレスポンダチェーンを通過し、それを受け入れる最初のレスポンダにアクションを送信します。 Macでは、現在のウィンドウまたはドキュメントにメニューコマンドを自動的に送信するためによく使用されます。同じボタンでメッセージを送信したいオブジェクトが複数ある場合は、これを使用する必要があります。

+0

答えに感謝します! – Moszi

+0

nilターゲットのコントロールとは何ですか?私は各コントロールがイベントによって多くのターゲットを持っていると思った。 –

+0

@JimThioあなたはそれを間違って解析しました。 「nil-targetedコントロールに何らかのアクションを追加するのではなく、あるコントロールにnil-targetedアクションを追加する」でした。"ターゲットは、コントロールごとではなく、アクションごとに設定されています。 –

関連する問題