iOS App,TableView侧滑后点击Cell导致App卡死

参考
iOS禁用侧滑返回手势要点解析
知乎
CocoaChina
博客园

一、问题描述

1、iOS App,TableView侧滑后点击Cell,App卡死
2、当App页面处于死机后,按Home键后,再次启动App时,App应用会显示之前操作的下一步的动作,但还是一样会死机,重复如此 。
3、只有将进程杀掉,再次启动App才可流畅操作。

二、问题分析

1、当前App是在RootViewController,先侧滑然后点击Push至以一个界面,100%卡住APP
2、Cell响应了点击事件,并且创建了下一个界面,只是没显示出来。点击Debug View Hieraarchy 按钮可查看到下一个界面的视图被创建出来了。
3、当前RootViewController有一个自定义的UINavigationController,可能是NavigationController的手势失效或发生冲突导致了App卡死

三、解决方法

1、自定义的UINavigationController遵守UINavigationControllerDelegate协议
@interface MyNavigationController ()

2、viewDidLoad中设置代理为当前控制器
self.delegate = self;

3、实现代理方法
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
    //set gesture yes when showViewController 
    if ([navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
        navigationController.interactivePopGestureRecognizer.enabled = YES;
    }
    
    // if rootViewController, set delegate nil
    if (navigationController.viewControllers.count == 1) {
        navigationController.interactivePopGestureRecognizer.enabled = NO;
        navigationController.interactivePopGestureRecognizer.delegate = nil;
    }
}
  • 判断当前为RootController, 设置手势无效, 而且必须设置delegate为nil, 这样的话就可以解决卡死的问题了。

你可能感兴趣的:(iOS App,TableView侧滑后点击Cell导致App卡死)