我有一个UITableView
,里面有几个UITableViewCells
。因为我只有几个单元格,所以表格视图的某个区域没有被单元格覆盖。我想在点击空白区域时做点什么。
我尝试在表格视图中添加UITapGestureRecognizer
。它检测到空区域的敲击,但随后细胞无法响应敲击。我尝试在表视图的超级视图上添加点击手势识别器,但结果是一样的。
必须有办法做到这一点,但我还没弄明白。有没有办法实现我想做的事情?
答案 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或其他一些自定义视图