ОП опубликовал суть своего ответа, и это сработало. Вот подробности. В моем случае мне просто нужно было знать, было ли касание в левой или правой половине ячейки.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = ...;
// Do this once for each cell when setting up the new cells...
UITapGestureRecognizer *cellTapGestureRecognizer = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(cellTapGesture:)];
[cell.contentView addGestureRecognizer:cellTapGestureRecognizer];
// ...
return cell;
}
Обработайте касание или передайте его didSelectRowAtIndexPath:
- (void)cellTapGesture:(UITapGestureRecognizer *)sender
{
CGPoint touchPoint = [sender locationInView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:touchPoint];
rightBOOL = ( touchPoint.x > self.tableView.contentSize.width/2 ); // iVar
// The UITapGestureRecognizer prevents didSelectRowAtIndexPath, so procees
// the touch here. Or, since only one row can be selected at a time,
// call the old code in didSelectRowAtIndexPath and let it access
// rightBOOL as an iVar (or pass it some other way). Anyway, x location is known.
[self tableView:self.tableView didSelectRowAtIndexPath:indexPath];
}