ユーザーイベント(OS X)


イベントは、ユーザがマウス、キーボード、または他の入力デバイスで起こしたアクションに関する情報をカプセル化するオブジェクトです。AppKit フレームワークは、アクションが発生したビューを処理するためのほとんどのイベントを提供します。AppKit は、次のような多くの種類のイベントを定義しています:


event_delivery_OSX



AppKit はほとんどのイベントタイプを表すために定数を宣言しています。それはまた、特定の型やカテゴリのイベントを処理するためにオーバーライド(上書き) する必要があるメソッドを宣言しています。


イベントとタッチオブジェクト


AppKit がイベント処理メソッドを呼び出すと、それは NSEvent オブジェクトに渡します。このオブジェクトは、イベント·タイプ、タイムスタンプ、および関連するウィンドウなどのユーザーアクションに関連する情報をカプセル化します。イベントの種類に応じて、情報はまた、ウィンドウ内のイベントの位置も含むことができ、マウスクリックの数、Unicode 文字(キー押下用) 、およびもしあれば修飾キーが押された事も含みます。


NSTouch オブジェクトは、特定の瞬間にトラックパッド上の特定のタッチを記録します。これは、マルチタッチシーケンス全体を通じて永続的ではありません。AppKit はシーケンスが進行して行く新しいインスタンスを作成します。ただし、ID プロパティを通じてその寿命全体でのタッチを追うことができます。ジェスチャーイベントは AppKit が、標準的なジェスチャー(例えば、回転やスワイプ) と認識するタッチオブジェクトのシリーズです。


イベント配信


イベントは、そのメインイベントループを通してアプリケーションに配信する、低レベルの通知の非同期ストリームとして始まります。メインイベントループでは、アプリケーションは、イベントキューからイベントを取得し、NSEvent オブジェクトに変換して、処理するために適切なオブジェクトに配信します。イベントが処理された後、キュー内の次のイベントは、それを送出し、取得というように続きます。


イベント配信の経路は、種類やイベントのカテゴリによって異なります。一般的には、アプリケーションオブジェクト(NSApp) は、ユーザーのアクションが発生したウィンドウにイベントを送信し、ウィンドウは、ユーザーのアクションが発生したビューにイベントを配信します。大体のキーイベントの場合、そのビューはファーストレスポンダであり、マウス、タブレット、およびトラックパッドイベントの場合、ビューは、マウスのクリック、スタイラスの動き、あるいはジェスチャが行われた所です。目的先のビューがイベントを処理しない場合、それが処理されるか破棄されるかするまで、イベントはレスポンダチェーンを上に移動します。


イベント処理


イベント、responder クラス(通常はカスタムビュー) を処理するには、YES を返すように acceptsFirstResponder メソッド(NSResponder) を最初に上書きします。(デフォルトではビューはイベントに応答しません。) mouseUp:keyDown: そして tableProximity: などのような特定の型、特徴のあるイベントのための NSResponder クラスによって宣言された複数のメソッドを実装します。


多くのイベント処理の実装は、渡された NSEvent オブジェクトを調べます。ほとんどのマウス、タブレット、その他のイベントについては、イベントの位置を取得し、ビューのローカル座標系にその場所に変換します。また、イベントの種類、サブタイプ、タイムスタンプ、および修飾フラグをチェックしたいでしょう。完全にイベントを処理する場合は、メソッドのスーパークラスの実装を呼び出さないで下さい。イベントを処理しないか、部分的にしかそれを処理しない場合には、スーパークラスの実装を呼び出すことによって、レスポンダチェーンにそれを渡します。


ジェスチャーイベントは他のイベントと同じように処理されます。そして magnifyWithEvent:rotateWithEvent: などのメソッドを実装します。NSEvent クラスは、イベントを処理するために必要な情報を与えるような magnificationrotation などのアクセサメソッドを定義しています。


前提条件の記事


レスポンダ・オブジェクト
メインイベントループ

関連記事


ターゲットアクション

既知のディスカッション


ココアイベント・ハンドリングガイド


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


LightTable

TargetGallery

目次
Xcode の新機能

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










    トップへ










    トップへ










    トップへ