2012-03-19 5 views
0

特定の理由で私のアプリケーションでは、ユーザーがタップすると新しいView ControllerにプッシュするようにUIImageViewをタッチ可能にします。私はUIButtonと同じことをすることを知っています。しかし、私はUIImageViewがこれを今したい。私はどうしますか?このUIbuttonを作ることが容易であろうが はここ(あなたは私が述べたように)、あなたはUIImageViewのためUITapGestureRecognizerを実装することができますUIImageView新しいViewControllerをプッシュするためのUIImageView

UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(50, 100, 50, 50)]; 
[imageView setImage:[UIImage imageNamed:@"myImage.png"]]; 
imageView.userInteractionEnabled = YES; 
[self.view addSubview:imageView]; 
[imageView release]; 

答えて

1

@Koryシャープはあなたがここで法

-(void) handleTap:(UITapGestureRecognizer *)recognizer { 
    if (recognizer.state == UIGestureRecognizerStateEnded) { 
     //push your view controller 
    } 
} 
+0

ps:ARCを使用していない場合、ジェスチャーが画像ビューに追加された後、 '[tap release];'を呼び出して、ヘッダーにUIGestureRecognizerDelegateを追加してください。 – Mat

+0

あなたは私がそのことをしたと言いました。しかし、動作していません – jason

+0

何が問題なのですか?私はこれを何度もやった。 – Mat

1

のための私のコードです。また、userInteractionEnabledプロパティを使用して、ビューに対するユーザー操作を有効にする必要があります。

+0

コードを教えてもらえますか? – jason

0

私はここにシングルタップジェスチャー認識を使用しています

{ 
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(50, 100, 50, 50)]; 
    [imageView setImage:[UIImage imageNamed:@"myImage.png"]]; 
    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)]; 
    [tapGesture setNumberOfTapsRequired:1]; 
    [tapGesture setNumberOfTouchesRequired:1]; 

    [imageView setGestureRecognizers:[NSArray arrayWithObject:tapGesture]]; 
    [tapGesture release]; 
    imageView.userInteractionEnabled = YES; 
    [self.view addSubview:imageView]; 
    [imageView release]; 
} 

-(void)imageTapped:(id)sender 
{ 
    // Do STUFF HERE 
} 
0

ハンドルUITapGestureRecognizer

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)]; 
[tap setNumberOfTapsRequired:1]; 
[yourImageView addGestureRecognizer: tap]; 

を使用することができます言ったようにされますMatとしての完全なコードについて:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(50, 100, 50, 50)]; 
    [imageView setImage:[UIImage imageNamed:@"tap.png"]]; 
    [self.view addSubview:imageView]; 
    imageView.userInteractionEnabled = YES; 


    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)]; 
    [tap setNumberOfTapsRequired:1]; 
    [tap setNumberOfTouchesRequired:1]; 
    [imageView addGestureRecognizer: tap]; 
    [tap release]; 
    [imageView release]; 
} 

-(void) handleTap:(UITapGestureRecognizer *)recognizer { 
    if (recognizer.state == UIGestureRecognizerStateBegan) { 


     MyTestViewController* viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"TestTable"]; 
     [self.navigationController pushViewController:viewController animated: YES]; 

    } 
} 
関連する問題