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