在UITableViewCell中点击UIImageView的识别

Ana*_*att 24 cocoa-touch objective-c uitableview uigesturerecognizer ios

目前我遇到了一个问题,我想在我的UITableViewCell上的UIImageView被点击时执行操作.

问题:我怎么能这样做?任何人都可以向我展示代码或任何教程吗?

提前致谢!

Mic*_*lum 45

这实际上比你想象的要容易.您只需要确保在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);
}
Run Code Online (Sandbox Code Playgroud)


Waa*_*han 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");
}
Run Code Online (Sandbox Code Playgroud)

确保你有....

imageView.userInteractionEnabled = YES;
Run Code Online (Sandbox Code Playgroud)