イベント(iOS)


iOS のイベントは、指がアプリのビューを触ったり、ユーザーがデバイスを振った事を表します。1本以上の指がおそらく動き回ったり、1つまたは複数のビューにタッチダウンしたり、1つ以上のビューから離れます。これが起こっているように、iPhone のマルチタッチシステムは、イベントとして、これらのタッチを登録し、処理のために、現在アクティブなアプリに送信します。最後の指がそのビューから離れるまで、第1の機能は、ビューにタッチダウンした瞬間から可能なタッチ動作のこの範囲は、マルチタッチシーケンス を定義します。アプリ(およびフレームワークオブジェクト) は、通常、それらがピンチやスワイプのようなジェスチャーかどうかを判断するために、マルチタッチシーケンスを分析します。


ユーザーがデバイスを振ると、オペレーティングシステムは、モーションイベントを生成できます。これらは、アプリへの個別のイベントとして配信されます。


オブジェクトはビューに触れる指を表現


ビューに触れる指は、UITouch オブジェクトによって表されます。タッチオブジェクトは、指が触れているビュー、ビュー内の指の位置、タイムスタンプ、および位相などの情報を含みます。タッチオブジェクトは、指定された順序でマルチタッチシーケンスの間にいくつかの段階を経ます:


UITouchPhaseBegan

指がビューに触れしました。


UITouchPhaseMoved

指がそのビューまたは隣接するビューに移動しました。


UITouchPhaseEnded

指がビューから離れました。


タッチオブジェクトはまた固定相であり、またはキャンセルできます。タッチオブジェクトは、マルチタッチシーケンスを通じて永続的であるが、それらの状態が突然変異。それは処理のためビューにタッチオブジェクトを配信すると、アプリケーションパッケージは、UIEvent オブジェクト内のタッチオブジェクトをパッケージします。


event_delivery



タッチオブジェクトの配信は、定義された経路をたどる


メインイベントループでは、アプリケーションオブジェクトは、そのイベントキュー内の(生) タッチイベントを取得し、UIEvent オブジェクト内の UITouch オブジェクトとしてそれらをパッケージ化し、タッチが発生したビューのウィンドウにそれらを送信します。ウィンドウオブジェクトは、今度は、ヒットテストビュー として知られている、このビューにこれらのオブジェクトを送信します。(通常はそれが必要なイベント処理メソッドを実装していないので) このビューはタッチイベントを処理できない場合は、それが処理または廃棄されるまで、イベントはレスポンダチェーンを登って行きます。


イベントを処理するために4つのメソッドをオーバーライド


カスタムビューとビューコントローラを含むレスポンダオブジェクトは、UIResponder クラスによって宣言された4つのメソッドを実装することによって、イベントを処理します。


各メソッドの最初の引数は、指定された相でのタッチオブジェクトのセットです。 2番目の引数は、現在のマルチタッチシーケンス内のすべてのタッチオブジェクトを追跡する UIEvent オブジェクトです。


デフォルトでは、ビューは、マルチタッチイベントを受信できます。それらの userInteractionEnabled プロパティが NO に設定されているため、一部の UIKit ビュークラスのインスタンスは、しかし、マルチタッチイベントを受け取れません。これらのクラスをサブクラス化し、イベントを受信したい場合は、このプロパティを YES に設定してください。カスタムビューとビューコントローラはすべての4つのメソッドを実装する必要がありますが、UIKit ビュークラスのサブクラスは、相または関心のある相に対応するメソッドを実装するだけの責任があります。このケースでは、しかし、それらは最初にスーパークラスの実装を呼び出すようにしなければなりません。


モーションイベントの処理


デバイスの加速度計を介して、オペレーティングシステムは特定のモーションを検出し、アクティブなアプリケーションにイベントとしてこれらを送信します。(現在サポートされるモーションは、デバイスを振ることだけです。) ファーストレスポンダは、最初、これらのモーションイベントを(UIEvent オブジェクトとして) 受け取り、それらを扱うことができない場合、それらは、レスポンダチェーンを登って行きます。モーションが始まるときと、それが停止したときだけにシステムは、アプリケーションに通知します。対応 する UIResponder メソッドは motionBegan:withEvent:motionEnded:withEvent: です。取扱レスポンダオブジェクトに渡された唯一の情報は、イベントオブジェクトによってカプセル化されたデータです。イベントタイプ(この場合は、UIEventTypeMotion) 、イベントサブタイプ(この場合、 UIEventSubtypeMotionShake) およびタイムスタンプ。


前提条件の記事

レスポンダオブジェクト


関連記事

アプリケーションオブジェクト
メインイベントループ
ビュー・オブジェクト
ターゲットアクション

既知の議論

iOS 環境


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

レスポンダメソッドとジェスチャー認識装置を使用してタッチを処理

目次
Xcode の新機能

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















    トップへ














    トップへ














    トップへ