ChavezChen / CWLateralSlide

One line of code to integrate 0 coupling side drawer!一行代码集成0耦合侧滑抽屉!
MIT License
1.28k stars 201 forks source link

手势冲突问题 #38

Closed lyon888 closed 6 years ago

lyon888 commented 6 years ago

老项目首页上使用UIPercentDrivenInteractiveTransition添加了自定义的手势push动画,然后在首页viewdidload上添加

// 注册手势驱动 __weak typeof(self)weakSelf = self; [self cw_registerShowIntractiveWithEdgeGesture:NO transitionDirectionAutoBlock:^(CWDrawerTransitionDirection direction) { if (direction == CWDrawerTransitionFromLeft) { SVLeftViewController *vc = [SVLeftViewController create]; [weakSelf cw_showDrawerViewController:vc animationType:CWDrawerAnimationTypeMask configuration:nil]; } }];

这样子我原先在首页的Push手势就失效了,请问知道这是什么问题吗

lyon888 commented 6 years ago

还有首页上的tableview上下滑动也会触发出左滑操作

ChavezChen commented 6 years ago

UIPercentDrivenInteractiveTransition这个冲突了吧,我也是用这个来进行自定义present动画的,。可能响应的是你的手势然后返回到了我写的动画代理里面了。

lyon888 commented 6 years ago

是的,我在navigation的手势代理方法走完之后,会走你CWInteractiveTransition中的代理方法,然后直接return NO掉了。请问有方法可以解决吗

ChavezChen commented 6 years ago

理论上是可以改的,不过挺麻烦。就是把两个转场结合一下,去掉其中一个手势,按照手势的情况来判断进行push还是抽屉。工作量有点大。。而且得你自己改代码。首先把你写的动画通过CWLateralSlideAnimator里面的代理方法返回。然后在这个CWInteractiveTransition里面的手势的地方来判断是进行push 还是抽屉。。除了这个 暂时没有想到比较好的解决方式哦。

ChavezChen commented 6 years ago

或者你看看在代理里面返回YES会是怎样的情况。。。如果返回YES可行的话 你可以试试给你的手势添加一个tag,判断other的tag直接返回YES

lyon888 commented 6 years ago

谢谢你的回答。问题已解决,看到你代码里面的手势互斥代理方法,里面你写的是除了tableview之外的其他手势都互斥。建议开放这个选项。这个应该根据需求的不同让开发人员自己选择。

ChavezChen commented 6 years ago

已经提供了手势处理的接口了