解决UITapGestureRecognizer手势与UITableView的点击事件的冲突
2017-08-15 08:23
666 查看
UITableView 拥有属于自己的点击事件,在将一个UITableView 的控件放在其它视图上, 并且其它视图需要添加手势进行操作的情况下,我们会发现我们点击UITableView的cell的时候, 并没有出发方法:
-(void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath; 是直接进入到了手势的方法中。 这是由于手势的冲突引起的,解决方法是调用UIGestureRecognizer的大力方法:-(BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizershouldReceiveTouch:(UITouch *)touch;
在此方法中, 我们可以截获所点击的视图,并决定是否手势继续向下响应:
我们可以根据UITableView的触摸来判断:
-(BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch {
if([NSStringFromClass([touch.viewclass])isEqual:@"UITableViewCellContentView"]){
returnNO;
}
returnYES;
}
也可以根据 添加手势的View来判定:
-(BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch {
if ([touch.view isKindOfClass:[UIScrollView class]]) {
returnYES;
}
returnNO;
}
-(void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath; 是直接进入到了手势的方法中。 这是由于手势的冲突引起的,解决方法是调用UIGestureRecognizer的大力方法:-(BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizershouldReceiveTouch:(UITouch *)touch;
在此方法中, 我们可以截获所点击的视图,并决定是否手势继续向下响应:
我们可以根据UITableView的触摸来判断:
-(BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch {
if([NSStringFromClass([touch.viewclass])isEqual:@"UITableViewCellContentView"]){
returnNO;
}
returnYES;
}
也可以根据 添加手势的View来判定:
-(BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch {
if ([touch.view isKindOfClass:[UIScrollView class]]) {
returnYES;
}
returnNO;
}
相关文章推荐
- 解决UITapGestureRecognizer 与 UITableView 点击事件冲突
- UITapGestureRecognizer和UITableView点击事件冲突问题
- iOS UITapGestureRecognizer手势和UIButton 以及UITabelView点击事件冲突
- 如何解决UIScrollView中添加UITapGestureRecognizer跟UIButton点击事件冲突
- UITapGestureRecognizer手势与UITableView冲突解决
- Swift UICollectionView、UITableView列点击事件与 UITapGestureRecognizer 点击事件冲突处理
- UITapGestureRecognizer和UIButton的点击事件冲突的解决办法
- UITableView添加UITapGestureRecognizer与didSelectRowAtIndexPath冲突解决
- 给UIimageView添加UITapGestureRecognizer手势点击事件
- UITableView添加UITapGestureRecognizer与didSelectRowAtIndexPath冲突解决
- 开发笔记:解决安卓GestureOverlayView手势和ListView点击事件、文本框获取焦点冲突的问题
- UITapGestureRecognizer和UIButton的点击事件冲突的解决办法
- UIView添加UITapGestureRecognizer和UITableView点击冲突
- Tap手势与UITableView点击事件冲突解决办法
- iOS中添加UITapGestureRecognizer手势识别后,UITableView的didSelectRowAtIndexPath失效 或者点击UITableView的空白处收起键盘
- 父视图的UITapGestureRecognizer和子视图UICollectionView的cell点击冲突解决办法
- 给UITableView添加UITapGestureRecognizer 每个Item多事件点击出现崩溃
- iOS 6.0之前 UITapGestureRecognizer手势和UIButton 点击事件冲突
- 解决触摸事件冲突-UITapGestureRecognizer
- iOS中添加UITapGestureRecognizer手势识别后,UITableView的didSelectRowAtIndexPath失效