美文网首页
iOS 视图 push 时,UI卡死问题

iOS 视图 push 时,UI卡死问题

作者: zwing | 来源:发表于2023-02-06 15:17 被阅读0次
    起因:

    之前一直没有遇到类似问题,最近遇到项目UI视图经常卡死现象,一直没找到必现条件,后面发现在rootViewController页面触发侧滑返回pop操作,再push就会卡死,定位到是侧滑手势导致的。

    分析:

    因为我们的navigationController是自定义的,所以系统的侧滑返回手势会被禁掉,项目需要我们执行以下代码,把侧滑手势打开

    @implementation DDNavigationController
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
       __weak typeof(self) weakself = self;
        if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
            self.interactivePopGestureRecognizer.delegate = (id)weakself;
        }
    }
    @end
    

    此时,如果我们在rootViewController里面执行侧滑手势,相当于执行了一个pop操作(只是我们没有看到效果),然后接着再去执行push,自然就push不到下一级页面了。

    解决方法:

    判断当前页面是不是根视图,如果是就禁止掉侧滑返回手势,如果不是就打开,代码如下(在DDNavigationController中实现):

    #pragma mark - UIGestureRecognizerDelegate
    - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
        if (gestureRecognizer == self.interactivePopGestureRecognizer) {
            // 屏蔽调用rootViewController的滑动返回手势
            if (self.viewControllers.count < 2 || self.visibleViewController == [self.viewControllers objectAtIndex:0]) {
                return NO;
            }
        }
        return YES;
    }
    

    相关文章

      网友评论

          本文标题:iOS 视图 push 时,UI卡死问题

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