检测UITableView的自定义单元上的水龙头

所以我有一个自定义的UITableViewCell包含三个UILabelUITableViewCell是这样的UILabel完全覆盖单元格。

现在我想要检测用户每次点击单元格。 问题是因为UILabel覆盖单元格,我不能使用UITableView委托方法来检测单元格上的触摸。

我尽pipe在UILabel上使用手势recoginzers但我没有得到被触摸的单元格的索引。 我也想过在单元格的顶部放置一个透明的button,但这里也有同样的问题,我无法得到被触摸的单元格的索引。

任何人都可以指导我的方法,我怎样才能完成检测与tableView didSelectRowAtIndexPathUILabel覆盖单元格的水龙头。

尝试在单元格中的所有标签中将userInteractionEnabled设置为false。 这将传递到单元格,然后你可以使用UITableView代表。 确保单元格保持userInteractionEnabled = YES

除了didSelect方法以获得触摸事件,请尝试此操作。 在你的自定义单元类中添加一个块,

 typedef void(^TappedCell)(CustomCell *cell); 

并为它添加一个属性,

 @property (nonatomic, strong) TappedCell tappedCell; 

并透明的button动作

 - (IBAction)buttonTapped { if (self.tappedCell) { self.tappedCell(self); } } 

并在cellForRow方法

 __weak type(self)weakSelf = self; cell.tappedCell = ^ (CustomCell *tappedCell) { //Ur actions goes here //for getting index NSIndexPath *indexPath = [weakSelf.tableView indexPathForCell:tappedCell]; [weakSelf someActionWithIndexPath:indexPath]; }; 

UILabel隐藏你的单元格或UIImageView隐藏它并不重要。 它会自动检测tableView didSelectRowAtIndexPath 。 首先检查你是否会遇到任何问题。 你有没有尝试首先实现tableview的细节