現在問題に直面しています。UITableViewCellのUIImageViewがタップされたときにアクションを実行したいと思います。
質問:どうすればよいですか?誰かがコードやチュートリアルを見せてもらえますか?
前もって感謝します!
これは実際には思っているより簡単です。 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);
}
これを試して
//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;
uIImageViewの代わりにcustomButtonを使用できます
タップジェスチャー認識機能はメモリを大量に消費する可能性があり、ページ上の他のものが壊れる可能性があります。カスタムテーブルセルを作成し、カスタムセルフレームにボタンを挿入し、テーブルビューコードでself.customtablecell.background.imageに必要な画像を設定することを個人的にお勧めします。このように、ボタンにIBactionを割り当てて、任意のビューにプッシュすることができます。
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];