美文网首页
iOS假死问题,导航栏pop引起假死

iOS假死问题,导航栏pop引起假死

作者: 路有点颠簸 | 来源:发表于2019-01-15 11:21 被阅读5次

引发

在navigation的rootViewController使用‘边缘返回手势’就是右滑,此时APP无异常,然后任意操作push到二级界面,再pop到该导航控制器rootViewController,此时APP已经假死了,现象是界面卡死,动不了

解决

在导航栏的根控制器中

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    // 如果 Self 是 NavigationController 的 根视图控制器, 则关闭返回手势.
    if (self == [self.navigationController.viewControllers firstObject]) {
        self.navigationController.interactivePopGestureRecognizer.enabled = NO;
    } else {
        self.navigationController.interactivePopGestureRecognizer.enabled = YES;
    }
}

#pragma mark  - 方法1: 在手势的代理方法中, 判断是否允许启动手势
#pragma mark -
#pragma mark 是否允许手势启动
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
    
    // 如果 Self 是 NaivationController 的 根试图控制器, 则不允许启动手势
    if (self == [self.navigationController.viewControllers firstObject]) {
        return NO;
    }
    
    return YES;
}

原理

参考https://www.jianshu.com/p/e7ccc6ca0fef,有截图示意

相关文章

网友评论

      本文标题:iOS假死问题,导航栏pop引起假死

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