BUG

2018-12-13  本文已影响0人  Leon1024

一、 在QMUINavigationController.m文件中

// 接管系统手势返回的回调的方法中
- (void)handleInteractivePopGestureRecognizer:(UIScreenEdgePanGestureRecognizer *)gestureRecognizer 

在此方法中的下面代码加入对是否还存在动画的判断 self.isViewControllerTransiting = NO; 不然,当你三个控制器,vc1 push 到vc2 , vc2 push 到vc3 的场景。在vc1 push 到 vc2, vc2想手势pop返回,但操作到一半,不返回了,取消手势的时候,不会将 self.isViewControllerTransiting = NO ,导致判断是否还存在过场动画还是YES,会拦截 vc2 push 到vc3。

if (state == UIGestureRecognizerStateEnded) {
        if (CGRectGetMinX(self.topViewController.view.superview.frame) < 0) {
            // by molice:只是碰巧发现如果是手势返回取消时,不管在哪个位置取消,self.topViewController.view.superview.frame.orgin.x必定是-124,所以用这个<0的条件来判断
            QMUILog(NSStringFromClass(self.class), @"手势返回放弃了");
            viewControllerWillDisappear = self.topViewController;
            viewControllerWillAppear = self.viewControllerPopping;
            self.isViewControllerTransiting = NO;  // 加的就是这行
            
        } else {
            QMUILog(NSStringFromClass(self.class), @"执行手势返回");
        }
    }
上一篇下一篇

猜你喜欢

热点阅读