Objective-C講習へ戻る

タッチイベントについて

タッチイベントは、UIViewやUIViewを継承しているクラス(UIImageViewなど)に実装することができます。

タッチイベントのフラグ設定

 
//初期化時
- (id)initWithFrame:(CGRect)frame {
	if (self = [super initWithFrame:frame]) {
 
		//タッチの可否
		self.userInteractionEnabled = YES;
 
		//マルチタッチの可否
		[self setMultipleTouchEnabled:YES];
	}
	return self;
}
 
 

上のサンプルではUIViewの初期化メソッド"initWithFrame"にてフラグ設定をしていますが、他のメソッドでももちろん設定可能です。 また、インスタンスから設定することも可能です。

 
//例:viewObjはUIViewのインスタンスです。
viewObj.userInteractionEnabled = YES;
 

タッチイベントの取得

タッチイベントの取得タイミングには

  • touchesBegan:タッチされた瞬間
  • touchesMoved:指を動かしている時
  • touchesEnded:指を離した瞬間
  • touchesCanceled:タッチイベントがキャンセルされた時(おそらく着信時など)

があります。 以下、タッチ座標を取得するサンプルです。

 
// タッチイベント
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
	// マルチタッチ
		for (UITouch *touch in touches) {
		CGPoint location = [touch locationInView:self];
		NSLog(@"x座標:%f y座標:%f",location.x,location.y);
	}
 
 
	/* シングル
	UITouch *touch = [touches anyObject];
	CGPoint location = [touch locationInView:self];
	NSLog(@"x座標:%f y座標:%f",location.x,location.y);
        */
}
 

タッチイベント取得実装の注意

シミュレータではマウスカーソル座標を取得しますが、実機では指でタッチした座標を取得します。指の腹でタッチすると、思ったより下の方の座標が取得される場合が多いみたいなので、その辺を考慮して開発をしましょう。
他にも色々考慮すべき点はあります。例えば

  • 右利き/左利き
  • 日本人の指/海外の方の指
  • 実機が縦向きの場合/実機が横向きの場合

などなど。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-10-24 (日) 17:14:25 (2554d)