Penta creation

ホームへ
2012年12月18日

UIViewのタップを検知

UITapGestureRecognizerでタップを検知する

UIViewのタップを検知しアクションを登録する方法を調べたところ、UIGestureRecognizerというAPIがの派生クラスで、タップだけでなくドラッグやピンチアウトも感知できるようなので、メモしておきます。


UITapGestureRecognizerのインスタンスを生成します。

UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onTapped:)];

タップされた際のアクション「onTapped:」を定義します。

- (void)onTapped:(UITapGestureRecognizer *)recognizer {

    //タップされた際のアクション
    NSLog(@"%@",recognizer);
}

「addGestureRecognizer:」でUIViewにrecognizerを登録します。

UIView *myView = [UIView alloc] init];
[myView addGestureRecognizer:recognizer];

タップもそうですが、タップ以外のドラッグやピンチアウトなども、UIGestureRecognizerの派生クラスのインスタンスを作成して、各クラスにあわせてアクションを登録してあげると検知できるようになります。

・UITapGestureRecognizer (タップ)
・UIPinchGestureRecognizer (ピンチインアウト主に拡大縮小)
・UIPanGestureRecognizer (ドラッグ)
・UISwipeGestureRecognizer (ページめくりやスクロール等のスワイプ)
・UIRotationGestureRecognizer (指2本で回転)
・UILongPressGestureRecognizer (長押し)

● ViewController.m

ソースをまとめると下記のような感じになります。


#import "ViewController.h"

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    //UIView作成
    UIView *myView = [[UIView alloc] init];
    myView.frame = CGRectMake(0,0,100,100);
    myView.backgroundColor = [UIColor redColor];
    [self.view addSubview:myView];
    
    //UITapGestureRecognizerインスタンスを作成
    UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onTapped:)];
    [myView addGestureRecognizer:recognizer];
}

- (void)onTapped:(UITapGestureRecognizer *)recognizer {

    //ここにタップされた際のアクションを記述
    NSLog(@"%@",recognizer);
}

@end

前の記事へ

ALAssetsLibraryを使う(4)

次の記事へ

横スライドメニューを試してみた

ページトップへ