NAK STYLE

iOSアプリ開発メインの趣味ブログ

Xcode

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

投稿日:

初めてだと詰まる場合が多いのでは・・・と思うので備忘録として。
画面遷移やタッチのアクションを 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欄で設定しましょう。

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: にも処理を追加しましょう。

-Xcode

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

関連記事はありませんでした