BUG

作者: Leon1024 | 来源:发表于2018-12-13 21:37 被阅读0次

    一、 在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), @"执行手势返回");
            }
        }
    

    相关文章

      网友评论

          本文标题:BUG

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