iOS 开发中遇到TableView 与单击手势冲突问题
2017-02-09 本文已影响0人
镌写不一样的人生
在iOS 开发过程中,有时会遇到界面既需要tableView 的点击事件,又需要在当前View添加手势,我们知道,如果直接加手势,会导致tableView的代理方法- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 在点击cell 时不调用,偶然间发现这种情况下,长按cell 反而会触发这个代理方法,从而可以知道,如果出现tableView的cell点击代理方法不执行,长按cell反而有响应 ,十有八九是与手势冲突了,这样提供了一个定位该类bug的思路。下面说说解决tableView 与手势冲突的办法,在手势的代理方法内,区分手势的响应区域即可,代码如下:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if ([touch.view isKindOfClass:[UITableViewCell class]]) {
return NO;
}else if ([touch.view.superview isKindOfClass:[UITableViewCell class ]]){
return NO;
}
return YES;
}