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

2019-01-15  本文已影响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,有截图示意

上一篇 下一篇

猜你喜欢

热点阅读