App卡顿 不响应点击事件(自定义导航栏)

最近遇到一个奇怪的问题:APP使用一段时间会变得非常卡,包括点击页面事件不响应。有一个明显的现象是切换到后台,再回到前台,APP会响应之前的一个响应事件,然后卡住了。当时的反应是,应该是有比较耗时的操作在阻塞主线程。但是没有发现有阻塞主线程的操作,请求都是异步的,只有在applicationDidBecomeActive里面调用了一个APP计数的接口。但是在注释这个接口后,APP仍然卡顿。
后来查资料才发现是右滑手势的坑。先交代一下环境。
APP在基类把系统的NavigationBar 给隐藏了,然后自定义一个UINavigationBar类贴在原来的NavigationBar上。后来为了实现右滑返回手势,写了这样一行代码:

self.navigationController.interactivePopGestureRecognizer.delegate = self;

之前也没有多想。四个根页面都会相应右滑手势,但是又不能返回上一个页面,造成了卡顿现象。
解决方法:在四个根页面的viewDidAppear 方法里禁用手势

self.navigationController.interactivePopGestureRecognizer.enabled = NO;

然后在pushViewController的时候,再将手势放开:

if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)])
    {
        self.navigationController.interactivePopGestureRecognizer.enabled = YES;
    }

APP响应事件卡顿的问题正式解决。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,663评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,259评论 4 61
  • 总有人 不费吹灰之力就住进我的心 一不留神,便占据一生 悠长的岁月 伴着拥抱过的甘甜 吞吐昼夜 我们的故事 是故意...
    游游茶舍阅读 171评论 0 1
  • 歩落躺在屋顶上,嘴里含这一根顺手从身边瓦片边拔起的草根,望着晴空朗朗的天空,发出一声重重的叹息! “这是那里?”用...
    坟墓鬼鬼阅读 314评论 0 1
  • 那是一个带着春日气息的夏天,绿叶葱葱茸茸,夹杂了光的影子,斑驳的地上,洒满了温暖。 走出寝室门,远远的望见一身白衣...
    connie君阅读 330评论 0 1