タッチイベント

iphoneで一番使うであろう、「タッチイベント」についての備忘録。
まだよくわかってないけどとりあえず書いてみます。

当たり前だけど、タッチイベントはiphoneの画面をタッチすると発生します。
で、このイベントを「レスポンダ」で拾って処理を進めるらしい。

主なレスポンダに「UIResponder」というものがあって、「UIView」や、「UIControl」なんかはこれを継承しているので、タップイベントに対応した処理を作ることが可能になるとのことです。

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
 タッチイベントが発生したけど、システムイベント(電話がかかってきたりとか?)が発生してキャンセルしなきゃいけなくなったときに発生するイベント。

これらを使ってタッチイベント処理を定義します。
touchesBeganでタッチした情報を取得するにはこういう処理が必要になります。

 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
 NSUInteger numTouches = [touches count]; //画面にタッチしている指の数を取得。
 UITouch *touch = [touches anyObject];//UITouch(画面にタッチした情報が色々つまってるobject)を取得。
 NSUInteger tapcount = [touch tapCount];//タッチした回数。同じポイントをタッチし続けると増える。
 CGPoint currentPoint = [touch locationInView:self.view]; //タッチしたポイントの情報を取得。
 CGFloat px = currentPoint.x; //タッチしたポイントのx座標。
 CGFloat py = currentPoint.y; //タッチしたポイントのy座標。 
}

きっとまだ色々できることがあるだろうけど、とりあえず今日調べたのはここまで。
マルチタッチとかもやりたいけど、実機にアプリをいれなきゃいけないのがちょっと手間だなー。