如何处理UITableView的非单元格区域的点击

时间:2014-05-24 17:25:16

标签: ios objective-c uitableview uitapgesturerecognizer

我有一个UITableView,里面有几个UITableViewCells。因为我只有几个单元格,所以表格视图的某个区域没有被单元格覆盖。我想在点击空白区域时做点什么。

我尝试在表格视图中添加UITapGestureRecognizer。它检测到空区域的敲击,但随后细胞无法响应敲击。我尝试在表视图的超级视图上添加点击手势识别器,但结果是一样的。

必须有办法做到这一点,但我还没弄明白。有没有办法实现我想做的事情?

2 个答案:

答案 0 :(得分:7)

试试这个: 初始化并将UITapGestureRecognizer添加到tableView:

UITapGestureRecognizer *gr = [[UITapGestureRecognizer alloc]  initWithTarget:self action:@selector(tap:)];
gr.delaysTouchesBegan = YES;
gr.delegate = self;
[_tableView addGestureRecognizer:gr];

实现手势识别器委托方法:

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
    CGPoint tapPoint = [gestureRecognizer locationInView:_tableView];
    UIView * clickedView = [_tableView hitTest:tapPoint withEvent:nil];
    NSString *viewClassName = NSStringFromClass(clickedView.class);
    return ![viewClassName hasPrefix:@"UITableViewCell"];
}

通过这种方式,您所做的每个点击都会超过您的UITapGestureRecognizer

答案 1 :(得分:0)

最后一行:return ![viewClassName hasPrefix:@"UITableViewCell"]; 应该更改为return [viewClassName hasPrefix:@"UITableView"];,因为您单击的单元格不必是UITableViewCell,而是UIView或其他一些自定义视图