*

UIImageViewをボタンのように設定する方法

   

N811_ipadkey500

画面遷移やタッチのアクションをUIButtonではなく、UIImageViewを直接タップして行いたい場合があると思います。

例えばアニメーションが設定されているイメージをタップしてイベントを起こしたい場合とか。

今回はその方法をご紹介します。

UIImageViewのタップを有効化する。

まずはUIImageViewのタップを有効化しましょう。

UIImageView *tapView = [[UIImageView alloc]init];
//タップを有効化する。
tapView.userInteractionEnabled = YES;

UIImageViewのuserInteractionEnabledは、UIImageViewのタップ検知の有無を設定するプロパティです。
これをYESにすることで、タップイベントが検知できるようになります。

StoryBoardから選択する場合は、右のUtility画面から「User Interaction Enabled」にチェックを入れます。

スクリーンショット 2013-12-08 23.54.11

UIImageViewにタグをつける

次に、タップイベントが発生した際、どのUIImageViewがタップされたのかを識別する為に、タグを付けましょう。

タグは数値を設定します。

UIImageView *tapView = [[UIImageView alloc]init];
//タップを有効化する。
tapView.userInteractionEnabled = YES;
//タグを設定する。
tapView.tag = 1;

StoryBoardから設定する場合は、右のUtility画面の「Tag」に数値を入れます。

スクリーンショット 2013-12-08 21.56.29

タップ時の処理を記述する。

最後にタップ時の処理を記述していきましょう。


- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    
    UITouch *touch = [touches anyObject];
    NSLog( @"%d",touch.view.tag );
    switch (touch.view.tag) {
        case 1:
            // 1のタグがタップされた場合の処理を記述
            break;
        case 2:
            // 2のタグがタップされた場合の処理を記述
            break;
        case 3:
            // 3のタグがタップされた場合の処理を記述
            break;
        default:
            break;
    }

}

touchesBegan:withEvent: はタップした時に呼び出されるメソッドです。

上記の例では、UITouchクラスからタップされたタグを取得し、タグの値により処理を振り分けています。

いかがでしょうか。

タッチイベントは他にもいくつかあります。

以下のサイト様に詳しく書かれているので、参考にしてみて下さい。

逆引きObjective-C for iPhoneアプリ – タッチイベントを取得する

 - objective-c, Xcode ,