UIGestureRecognizer 处理 UITableView 中的触摸

Posted

技术标签:

【中文标题】UIGestureRecognizer 处理 UITableView 中的触摸【英文标题】:UIGestureRecognizer handle touches in UITableView 【发布时间】:2012-04-02 11:45:30 【问题描述】:

我的班级有一个UITableView,里面有一个自定义的UITableViewCell,里面有一个UIImageView

我需要检测此UIImageView 上的触摸来处理自定义方法(handleSingleTouch:) 我需要在选择单元格时调用-didSelectRowAtIndexPath

所以我以这种方式向我的TableView 添加了UIGestureRecognizer

UIGestureRecognizer *GEST=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTouch:)];

[self.myTable addGestureRecognizer:GEST];
GEST.delegate=self;
[GEST release];

[GEST setCancelsTouchesInView:NO];
[GEST setDelaysTouchesEnded:NO];

有冲突: 每次触摸UIImageView 时,tableview GestureRecognizer 都会启动该方法,但也会调用 didSelectRowAtIndexPath

有人知道在不调用didSelectRowAtIndexPath 的情况下调用gestureRecognizerMethod 的方法吗?

【问题讨论】:

【参考方案1】:

尝试将手势识别器添加到图像而不是表格。看到这个答案https://***.com/a/7760402

【讨论】:

这可能是一个不错且实用的解决方案..但是如果您要加载 N 个项目,性能和节省内存呢??! @Denis - 很抱歉非常回复晚了。由于视图被回收,性能和内存应该不是问题,因此这种设置只会在第一次发生(如果我没记错的话)。【参考方案2】:

我想不出办法来做到这一点,因为您需要在整个单元格中进行触控响应。但是你可以做的是tag你的UIImageView然后检查-didSelectRowAtIndexPath的开头,对于UIImageViewreturn

【讨论】:

tnx 为您提供快速解答! tnx 给你,我找到了一个解决方案,但它有效!每次我检测到带有特定标签的 UIImageView 上的触摸时,我都会将 BOOL isImagePressed 设置为 YES,并将条件 if(!isImagePressed) 放在 didSelectRowAtIndexPath 上以控制特定方法。 其他人有更干净的解决方案?

以上是关于UIGestureRecognizer 处理 UITableView 中的触摸的主要内容,如果未能解决你的问题,请参考以下文章

RxSwift之UI控件UIGestureRecognizer扩展的使用

UIGestureRecognizer 处理 UITableView 中的触摸

如何将 UIGestureRecognizer 限制为特定的 UIView?

UIGestureRecognizer

与 UIGestureRecognizer 一起监听 UITouch 事件

从 UITouch 对象调用 UIGestureRecognizer