iOS SDKメモ UITapGestureRecognizerを使ってタップしたことを検知してみる

iPad,Mac,プログラミング

UIViewを継承したビュー上でしか動作しないみたいなんだけど、
UITapGestureRecognizerクラスを使うと結構簡単にタップのジェスチャーを検知できるようになるみたい。

手順としては、こんな感じ。

  1. UIViewを継承したビュークラスでUITapGestureRecognizerクラスのオブジェクトを生成
    ※こんとき、引数に呼びたいアクションメソッド名を書く
  2. UIViewのaddGestureRecognizerでさっきのオブジェクトを追加
  3. アクションメソッドを実装する

コードとしてはこんな感じのものを書いてみた。

まずはUIViewのinitWithFrameはこんな感じ。

- (id)initWithFrame:(CGRect)frame
{
	// UIViewの初期化
	self = [super initWithFrame:frame];
	if (nil == self)
	{
		NSLog(@"initWithFrame is faild.");
		return nil;
	}
	// UIViewの背景をオレンジに変更
	self.backgroundColor = [UIColor orangeColor];
	// UITapGestureRecognizerの初期化
	UITapGestureRecognizer* gestureTap = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(gestureTap:)] autorelease];
	if (nil == gestureTap)
	{
		NSLog(@"gestureTap is faild...");
		return nil;
	}
	// UIViewにUIGestureRecognizerを追加
	[self addGestureRecognizer:gestureTap];
	// return
	return self;
}

んで、次はタップしたときに呼ぶアクションメソッドはこんな感じ。

- (void)gestureTap:(id)sender
{
	NSLog(@"tap!!");
}

結果はこんな感じ。
iPhoneシミュレータで、オレンジになってるとこをドコでもいいのでタップ(マウスでクリックね)してみる。

デバッガコンソールでこんな感じでタップを検知していることを確認できる。

[Session started at 2010-10-31 08:45:19 +0900.]
2010-10-31 08:45:26.137 ColorGestureMixer[25755:207] tap!!
2010-10-31 08:45:26.732 ColorGestureMixer[25755:207] tap!!
2010-10-31 08:45:27.137 ColorGestureMixer[25755:207] tap!!

ちなみに、UITapGestureRecognizerクラスの仲間でスワイプやスクロールができるクラスもあるんだけど、追々試してみようかなっと。

んまま、そんだけ。