25

現在、問題に直面しています。UITableViewCell の UIImageView がタップされたときにアクションを実行したいと考えています。

質問:どうすればできますか? コードやチュートリアルを見せてもらえますか?

前もって感謝します!

4

5 に答える 5

46

これは、実際には思ったよりも簡単です。imageView でユーザー インタラクションを有効にして、タップ ジェスチャを追加できることを確認する必要があります。これは、同じイメージ ビューに複数のタップ ジェスチャが追加されるのを避けるために、セルがインスタンス化されるときに実行する必要があります。例えば:

- (instancetype)initWithCoder:(NSCoder *)aDecoder
{
    if (self = [super initWithCoder:aDecoder]) {
        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myTapMethod:)];

        [self.imageView addGestureRecognizer:tap];
        [self.imageView setUserInteractionEnabled:YES];
    }

    return self;
}

- (void)myTapMethod:(UITapGestureRecognizer *)tapGesture
{
    UIImageView *imageView = (UIImageView *)tapGesture.view;
    NSLog(@"%@", imageView);
}
于 2012-07-20T10:22:16.453 に答える
6

これを試して

//within cellForRowAtIndexPath (where customer table cell with imageview is created and reused)
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleImageTap:)];
tap.cancelsTouchesInView = YES;
tap.numberOfTapsRequired = 1;
[imageView addGestureRecognizer:tap];

// handle method
- (void) handleImageTap:(UIGestureRecognizer *)gestureRecognizer 
{
    RKLogDebug(@"imaged tab");
}

あなたが持っていることを確認してください...

imageView.userInteractionEnabled = YES;
于 2012-07-20T10:26:11.673 に答える
3

UIImageView の代わりに customButton を使用できます

于 2012-07-20T08:43:43.907 に答える
0

ALActionBlocksを使用してブロック内でアクションを実行する

__weak ALViewController *wSelf = self;
imageView.userInteractionEnabled = YES;
UITapGestureRecognizer *gr = [[UITapGestureRecognizer alloc] initWithBlock:^(UITapGestureRecognizer *weakGR) {
    NSLog(@"pan %@", NSStringFromCGPoint([weakGR locationInView:wSelf.view]));
}];
[self.imageView addGestureRecognizer:gr];
于 2016-12-27T14:43:44.973 に答える
0

タップ ジェスチャ レコグナイザーはメモリを大量に消費する可能性があり、ページ上の他の要素が壊れる可能性があります。カスタム テーブル セルを作成し、ボタンをカスタム セル フレームに挿入し、tableview コードで self.customtablecell.background.image を必要な画像に設定することを個人的にお勧めします。このようにして、ボタンに IBaction を割り当てて、任意のビューにプッシュすることができます。

于 2012-07-20T09:51:29.520 に答える