触摸tableView(但不是页眉/页脚)时检测单元格索引

时间:2016-01-02 21:13:23

标签: ios objective-c uitableview uigesturerecognizer

我有一个包含tableView的UITableViewController。我已经为这个控制器添加了一个轻击手势识别器,我希望当用户点击除了tableView的第一行(indexPath.row == 0)之外的任何地方时都会发生这种情况。

我已经看到以下相关问题和答案(等等):

  • this one关注检测tableView本身(因此它也会检测其页眉/页脚)。

  • 之前我使用过this one(下面的代码),但问题是如果单击页脚/标题,它也会计算(0,0)的indexPath。

-(BOOL) gestureRecognizer:(UIGestureRecognizer *)gesture shouldReceiveTouch:(UITouch *)touch {   
    CGPoint buttonPosition = [touch locationInView:self.view];
    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:buttonPosition];
    if (indexPath.row == 0) {
        return NO; // will also be returned if I click on the header / footer
    }
    return YES;
}

1 个答案:

答案 0 :(得分:1)

也许尝试在表格视图单元格上添加“不可见”UIButton,然后点击按钮标记作为索引。就像下面的伪代码一样:

-cellForRowAtIndexPath:index {
   UIButton *button = [UIButton alloc]initWithFrame:cell.frame];
   [button setTag:index.row];
   [button addTarget:self action:@selector(getIndex:) forControlEvents:UIControlEventTouchUpInside];
   [cell addSubview: button]
}


-(void)getIndex:(UIButton *)sender {
 finalIndex = [sender tag];
}