在tableView上加了一个点击手势, 但didSelectRowAtIndexPath的代理方法就不执行了,只会执行手势事件, 原因是应该是UITapGestureRecognizer吞掉了touch事件,导致didSelectRowAtIndexPath方法无法响应。
解决方法是实现UIGestureRecognizerDelegate的代理方法
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
,
在它的代理中区分点击控件,选择是否响应手势.
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
//点击的view的类名
NSLog(@"%@", NSStringFromClass([touch.view class]));
// UITableViewCellContentView就是点击了tableViewCell,则不截获点击事件
if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]){
return NO;
}
return YES;
}
网友评论