初めてだと詰まる場合が多いのでは・・・と思うので備忘録として。
画面遷移やタッチのアクションを UIImageView を直接タップして行う方法についてです。
UIImageViewのタップを有効化する
割と使うパターンなのかな?と個人的には思うのですがデフォルトでタップは無効化されています。
// UIImageView. UIImageView *testView = [[UIImageView alloc]init]; // タップを有効化. testView.userInteractionEnabled = YES;
UIImageViewのuserInteractionEnabledは、UIImageViewのタップ検知の有無を設定するプロパティです。
これをYESに設定することで、タップイベントが検知できるようになります。
UIImageViewにタグをつける
タップイベントを行う場合、IDで判定すると簡単なので覚えておきましょう。
ここではUIImageViewにIDをセットする方法です。
// UIImageView. UIImageView *testView = [[UIImageView alloc]init]; // タップを有効化. testView.userInteractionEnabled = YES; // タグを設定. testView.tag = 1;
StoryBoardから設定する場合は下記のTag欄で設定しましょう。
タップ時の処理を追加する
タップ時に上で設定したIDでViewを判定して動作する処理を追加してみましょう。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; NSLog(@"[Debug] Tag=[%d]",touch.view.tag); switch (touch.view.tag) { case 1: // タグ1のViewがタップされた場合の処理. break; case 2: // タグ2のViewがタップされた場合の処理. break; case 3: // タグ3のViewがタップされた場合の処理. break; default: break; } }
touchesBegan:withEvent: はタップした時に呼び出されるメソッドです。
そのままタッチしたViewをドラッグ移動させたい場合などは
touchesMoved:withEvent: にも処理を追加しましょう。