自定义表格视图单元格中特定元素的手势

Posted

技术标签:

【中文标题】自定义表格视图单元格中特定元素的手势【英文标题】:Gesture for specific element in custom table view cell 【发布时间】:2014-05-26 19:22:36 【问题描述】:

我正在使用一个自定义表格,其中每个单元格都包含多个元素,其中一个是最喜欢的“星形”图标。

我想添加一个点击手势,这样当点击星形图标时,它会变为“不喜欢”图标(反之亦然)。

我尝试在 cellForRowAtIndexPath 中添加一个点击手势:

UITapGestureRecognizer *tapRecognizer;
tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(favTapped)];
[[cell.contentView viewWithTag:1] addGestureRecognizer:tapRecognizer];

但点击图标只会调用 didSelectRowAtIndexPath(显然)。

不会调用我的选择器“favTapped”。

知道怎么做吗?

谢谢!

【问题讨论】:

星形图标是否启用了用户交互? 也许只是将 UIButton 作为子视图添加到单元格中? 感谢 DrBeardface!,错过了 :) 启用了用户交互,它现在可以工作了。 【参考方案1】:

您需要添加 GestureRecognizer 作为自定义单元类的属性。

在您的 customCell.h 中:

' @property (weak, nonatomic ) UIButton *yourButton; // or swipeGesture'

tableView:cellForRowAtIndexPatch:

   [cell.yourButton addTarget:self action:@selector(yourMethod) forControlEvents:yourControlEvent]; // also aviable for gestures

还验证是否启用了用户交互(在您的界面构建器中,您也可以在您自己的类中覆盖它或)。最简单的方法是在 tableView:cellForRowAtIndexPatch 中编写: [cell.contentView setUserInteractionEnabled:YES];

【讨论】:

以上是关于自定义表格视图单元格中特定元素的手势的主要内容,如果未能解决你的问题,请参考以下文章

在tableview自定义单元格中的图像上长按手势

自定义 UITableview 单元格可访问性无法正常工作

自定义表格单元格中的堆栈视图

Obj-C - 点击自定义表格视图单元格中的删除表格视图行按钮

自定义表格视图单元格中没有可见视图

使用自定义表格视图单元格中的故事板segue