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 ()<UINavigationControllerDelegate>

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, 这样的话就可以解决卡死的问题了。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,639评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,115评论 25 709
  • 孔明灯——落到哪里都是灾难,被烧蔬菜大棚的农民欲哭无泪!被烧小区引起火灾的居民无家可归,你许的愿,也许是别人的灾难...
    河北邢台阅读 3,375评论 0 0
  • 他在你心里是特别的 所以你希望他待你一样特别 当你发现他待别人和待你一样时 尽管你努力说服自己 他不是你 不需要对...
    王幸福cc阅读 3,258评论 0 2
  • 一不小心就把你丢了 我拾起画笔 画了个西瓜 和 梨子 不知道画什么好了。 画心 宣纸走笔 抽象派 2017/11/...
    逗霸君阅读 2,454评论 7 8

友情链接更多精彩内容