美文网首页
侧滑返回冲突问题

侧滑返回冲突问题

作者: 倾城何处不暖阳 | 来源:发表于2020-07-17 18:50 被阅读0次

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是竖向滑动, 横向滑动 底层应该把手势就给屏蔽了,不会触发这个手势,大家可以试一下。

相关文章

网友评论

      本文标题:侧滑返回冲突问题

      本文链接:https://www.haomeiwen.com/subject/aalnhktx.html