レスポンダ・オブジェクト


レスポンダは、イベントに応答し、それらを扱うことができるオブジェクトです。すべてのレスポンダオブジェクトは、最終的には NSResponder (AppKit フレームワーク) または UIResponder (UIKit フレームワーク) を継承するクラスのインスタンスです。これらのクラスは、イベント処理のためのプログラムインターフェイスを宣言し、レスポンダのデフォルトの動作を定義します。 アプリケーションの可視オブジェクトは、ほとんどの場合、レスポンダであり-例えば、ウィンドウ、ビュー、そしてコントロールーそしてアプリケーションオブジェクトも同様にレスポンダです。iOS では、ビューコントローラ(UIViewController オブジェクト) も、レスポンダオブジェクトです。


responder


イベントを受信するには、レスポンダは適切なイベント処理メソッドを実装する必要があり、場合によっては、それがファーストレスポンダになることができるとアプリケーションに伝えます。


ファーストレスポンダは、いくつかのイベントを最初に受信


アプリケーションでは、沢山の種類のイベントを最初に受信するレスポンダ・オブジェクトは、ファースト・レスポンダ として知られています。それは、キーイベント、アクションメッセージを受信し、ほかの種類のイベント- UIKit では、モーションとリモートコントロールのようなイベントを受信します。(マウスイベントとマルチタッチイベントは最初にマウスポインタまたは指の下にあるビューに移動し、そのビューは、ファーストレスポンダであるかもしれないし、そうではない場合もあります) ファースト・レスポンダは、一般的に、アプリケーションがイベントを処理するのに最適と判断したウィンドウ内のビューです。イベントを受信するには、レスポンダは、ファースト・レスポンダになるためにその意思を示す必要があり、プラットフォームごとに異なる方法でこれを行います。



// OS X

- (BOOL)acceptsFirstResponder { return YES; }


//IPhone OS

- (BOOL)canBecomeFirstResponder { return YES; }



イベントメッセージを受信することに加えて、レスポンダは、ターゲット指定がないアクションメッセージを受信できます。(アクションメッセージは、ユーザーがそれらを操作する時、ボタンや、コントロールなどのコントロールによって送信されます。)


レスポンダチェーンは協調イベント処理を有効に


ファーストレスポンダがイベントやアクションメッセージを処理できない場合には、レスポンダチェーン と呼ばれるリンクされたシリーズで、"次のレスポンダ" に転送します。レスポンダチェーンは、レスポンダオブジェクトに、アプリケーション内の他のオブジェクトへイベントやアクションメッセージを処理するための責任を転送できます。レスポンダチェーン内のオブジェクトがイベントやアクションを処理できない場合は、チェーン内の次のレスポンダにメッセージを再送信します。それが処理されるまで、メッセージは、上位レベルのオブジェクトに向かって、チェーンを上がって行きます。それが処理されなかった場合、アプリケーションはそれを破棄します。


iOS_and_OSX_responder_chain_2x



イベントのパス。イベントの一般的なパスは、マウスポインタや指の下のビューかファーストレスポンダであるビューから始まり、レスポンダチェーンを上って行きます。そこからは、ウィンドウオブジェクトと、それからグローバルアプリケーションオブジェクトへとビュー階層を上に向かって進んで行きます。しかし、iOS でのイベントのレスポンダチェーンは、このパスにバリエーションを追加します。ビューがビューコントローラによって管理されている場合に、ビューがイベントを処理できない場合は、ビューコントローラーが、次のレスポンダになります。


アクションメッセージのパス。アクションメッセージの場合は、OS X と iOS の両方の場合、他のオブジェクトへとレスポンダチェーンを拡張します。OS X では、アクションメッセージのレスポンダチェーンは、ドキュメント·アーキテクチャに基づいたアプリケーションにより異なり、ウィンドウコントローラ(NSWindowController) を使用しているアプリケーションと、それらのカテゴリのどちらにも合わないアプリケーションです。その上、Mac アプリがキーウィンドウとメインウィンドウの両方を持っている場合、アクションメッセージがそれに沿って移動するレスポンダチェーンは、両方のウィンドウのビュー階層を伴うことがあります。


前提条件の記事


ビュー階層

関連記事


ユーザーイベント(OS X)
ターゲット・アクション

既知のディスカッション


ココアイベント処理ガイド

サンプルコードプロジェクト

ClockControl

Dicey



目次
Xcode の新機能

  • アニメーション
  • コア・アニメーションは力を与える
    アニメーション必要条件
    暗黙・明示にアニメーション
    Platform 毎の Core Animation 統合
  • アプリケーションオブジェクト
  • アプリ Object は外部 delegate に通知
    アプリはアプリオブジェクト持つ
  • コントロールオブジェクト
  • UIKitでActMessageがEventを決定
    AppKitでControlは複数のセルを持つ
  • 座標系
  • 座標系は異なる描画方向を持てる
    ウインドウとビューは独自座標系
  • ドローイングモデル
  • ビューは自分自身を描画
    グラフィックコンテクスト
    描画はビューローカル座標系で
  • イベント(iOS)
  • オブジェクトはビューに触れる指を表現
    タッチオブジェクトの配信は、定義された経路をたどる
    イベントを処理するために4つのメソッドをオーバーライド
    モーションイベントの処理
  • フォーマッタ
  • フォーマッタの設定と適用
    OSXでセルにフォーマッタを添付
  • メインイベントループ
  • アプリケーションオブジェクト取得
    コアオブジェクトはイベントに応答
  • アウトレット
  • ターゲットアクション
  • アクションメソッドは特定の形式
    ツールの使用でターゲット設定
    ターゲットアクションと OS
  • アンドゥ・マネージャー
  • 取り消しの操作はオブジェクトに
    取り消し操作はスタックに
    操作は取り消しグループに合体
    取り消しを要求する方法
    取消マネージャとレスポンダ
    取消を要求ユーザーインタフェース
  • ビュー階層
  • 表示プロパティは、階層の関係定義
    iOS ではウィンドウはビューです
  • ビュー・オブジェクト
  • ビューのの中核プロパティ
    ビューはアニメーションの本質
  • ストーリーボード
  • シーンは唯一のビュー·コントローラとそのビューに対応
    セグエが2つのシーン間の遷移を管理
  • ウインドウ・オブジェクト
  • ウインドウがイベント配布
    iOS のウィンドウオブジェクト
    OS X のウィンドウオブジェクト
  • ペーストボード
  • ペーストボードは多くの項目を保持
    ペーストボードの持続性
  • 環境設定
  • 各ユーザー設定はドメインに属する
    アプリは環境設定の選択を提示
    ユーザーデフォルト設定で OS X
  • レスポンダ・オブジェクト
  • ファーストレスポンダは最初に受信
    レスポンダチェーンと協調イベント










    トップへ










    トップへ










    トップへ










    トップへ