タッチイベントはUIResponderクラスが行います。
UIResponderはUIViewクラスのスーパークラスであり、UIViewクラスは他の様々なユーザインターフェース(ラベルやボタン、スライダーやその他のコントロール群)のスーパークラスなのでほとんどのコントロールがUIResponderクラスの機能でタッチイベントを処理することが可能です。
タッチイベントを実装するには、UIResponderクラスのタッチイベントをオーバーライドします。
タッチイベントには以下のようなものがあります。
- (void) touchesBegan: (NSSet*) touches withEvent: (UIEvent*) event
タッチの開始
- (void) touchesMoved: (NSSet*) touches withEvent: (UIEvent*) event
タッチのドラッグ操作
- (void) touchesEnded: (NSSet*) touches withEvent: (UIEvent*) event
タッチの終了
- (void) touchesCancelled: (NSSet*) touches withEvent: (UIEvent*) event
通話等でタッチ操作がキャンセルされた
「NSSet」というのは、タッチ操作に関する情報を保持する、UITouchクラスのインスタンスを保持するクラスです。タッチ操作は複数の指で行われますので、NSSetクラスで複数のUITouchインスタンスを保持します。
UITouchクラスは、タッチ回数やタッチ時刻、タッチ対象のビュー、位置等を保持するクラスです。NSSetクラスからUITouch情報を取得するには、「anyObject」メソッドや「allObjects」を使います。
// UITouchを全て取り出す
NSArray* array = [ touches allObjects ];
for ( i = 0 ; i < [ array count ] ; i++ ) {
UITouch touch = [ array objectAtIndex: i ];
}
// UITouchを1つ取り出す
UITouch touch = [ touches anyObject ];
UIEventクラスは、イベント発生時刻の他、他コントロールにあるタッチ情報も含め、全てのタッチ情報を保持しています。
0 件のコメント:
コメントを投稿