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
的开头,对于UIImageView
和return
。
【讨论】:
tnx 为您提供快速解答! tnx 给你,我找到了一个解决方案,但它有效!每次我检测到带有特定标签的 UIImageView 上的触摸时,我都会将 BOOL isImagePressed 设置为 YES,并将条件 if(!isImagePressed) 放在 didSelectRowAtIndexPath 上以控制特定方法。 其他人有更干净的解决方案?以上是关于UIGestureRecognizer 处理 UITableView 中的触摸的主要内容,如果未能解决你的问题,请参考以下文章
RxSwift之UI控件UIGestureRecognizer扩展的使用
UIGestureRecognizer 处理 UITableView 中的触摸
如何将 UIGestureRecognizer 限制为特定的 UIView?