1如下图参数配置
需求:红色区域可侧滑返回 绿色区域不可以, 绿色区域 横向是tableviewcell里套的collectionview(篮圈)可以横向滑动的
做法:
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
return NO;
}
这个代理的意思就是 两个手势是否能同时生效;NO就是不能
原理呢:
collection向左滑动 两个犹豫不能同时触发 collection的手势优先级高区侧滑返回的,所以就不会触发侧滑返回
红色区域是tableview是竖向滑动 不影响横向滑动,所以侧滑是生效。

2如下图更多配置
需求同上,区别是右侧使用tableview做的, 是“竖向滑动”
如果像上边那样设置的话,是不行的, 因为tableview的竖向滑动 和侧滑本来就不冲突丫
解决办法:
//左侧table的手势代理:设置允许侧滑返回
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
//允许侧滑返回
[self.controller.navigationController setEnableBackGesture:YES];
return YES;
}
//右侧table的手势代理:设置不允许侧滑返回
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
//不允许侧滑返回
[self.controller.navigationController setEnableBackGesture:NO];
return YES;
}
//这个代理的注释
// called before touchesBegan:withEvent: is called on the gesture recognizer for a new touch. return NO to prevent the gesture recognizer from seeing this touch
//在 touchesbegin 进行新触摸之前调用。返回NO以防止手势识别器看到此触摸
它是在手势触发前调用的,所以在手势调用前,我控制是否可以侧滑就可以。
为什么不放在- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer;
因为tableview是竖向滑动, 横向滑动 底层应该把手势就给屏蔽了,不会触发这个手势,大家可以试一下。

网友评论