手势同UI控件事件的冲突
2016-04-20 10:21
585 查看
在使用中,我们会发现当收拾和UI控件共同存在的时候,系统会先去响应手势事件,而这会给我们带来很大的麻烦。
比如我们有一个 tableView,作为一个类似微信的点击加号弹出的菜单,tableView 添加在 一个背景视图上,我么给背景视图添加一个tap 事件,使点击背景菜单消失。这时候我们会发现tableView cell的点击delegate不会调用,就是因为事件被 手势屏蔽了。这时候我们需要通过手势的delegate 进行处理
加入手势的委托
手势初始化 delegate = self;
实现手势的这个委托方法
如果点击的视图是背景视图,则返回Yes,响应手势,否则响应其他。这个可以根据个人需要进行调整!
比如我们有一个 tableView,作为一个类似微信的点击加号弹出的菜单,tableView 添加在 一个背景视图上,我么给背景视图添加一个tap 事件,使点击背景菜单消失。这时候我们会发现tableView cell的点击delegate不会调用,就是因为事件被 手势屏蔽了。这时候我们需要通过手势的delegate 进行处理
加入手势的委托
@interface FLMenuView ()<UITableViewDelegate, UITableViewDataSource,UIGestureRecognizerDelegate>{
手势初始化 delegate = self;
UITapGestureRecognizer* tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)]; tap.delegate = self; [self addGestureRecognizer:tap];
实现手势的这个委托方法
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { if ([touch.view isKindOfClass:[self class]]){ return YES; } return NO; }
如果点击的视图是背景视图,则返回Yes,响应手势,否则响应其他。这个可以根据个人需要进行调整!
相关文章推荐
- [BUG]UITapGestureRecognizer和UITableView的冲突(didSelectRowAtIndexPath无反应)
- 侧滑手势与UIScrollView滚动手势冲突解决
- UITableView的上下滑动与自己添加的手势冲突
- 自定义ViewPager拦截手势,防止手势冲突
- gesture与tableView手势冲突,didSelectRowAtIndexPath:执行出问题
- 解决手势冲突问题
- 处理js手势与android view手势的冲突
- UIGestureRecognizer手势识别详解
- 个人详情页面 tableView套scrollView
- iOS-事件响应链的学习
- webView添加手势的冲突问题
- iOS 手势添加及冲突解决
- 关于手势冲突
- iOS 最简单解决事件冲突的思路,深入浅出cancelsTouchesInView属性
- 解决UITexFiled,UITableView与手势冲突
- iOS手势冲突相关解决
- iOS,scrollview手势冲突
- iOS开发(OC)——单击手势与tableView的点击冲突
- 手势与控件事件冲突的解决方案
- UITapGestureRecognizer手势与UITableView冲突解决