最近无意中点自己app的时候,莫名其妙发现页面卡死不动了,但是项目还是正常跑着在,并没有什么异常。然后把app切到后台后再点开,又好了,不过在转场的时候就出现问题了,转场背景成了window的底色,还没动画。
之后反复弄了好几次,终于发现了问题所在,在UINavigationController
的根视图上,我还进行右滑操作(此时上级界面是没有VC的),页面就会卡死,手势冲突!!
问题
项目中我们都会弄一个根视图,我在这里定义了一个RootViewController,并且在ViewDidLoad方法里,实现了自定义的一个右滑手势添加到全局,而这个手势的执行操作则是用上了系统默认的返回操作,如下
1 | - (void)addPanGesture{ |
然后只要是继承了该RootViewController
的VC,每次界面走ViewDidLoad方法时候都会加载自定义的右滑手势。当我们push
到下一个BVC的时候,再右滑pop
操作是没问题的,但是当栈顶没有Controller
,也就是当前VC是最外层的VC的时候,比如我们程序刚进来tabbar
控制的几个VC,这时候这个VC如果也添加了我们自定义的右滑手势,再去右滑的时候,就会出现卡死的状态。
问题修复
在UINavigationController
的根视图界面,也就是tabbar
控制的VC里,将我们添加的右滑手势给去掉,因为这几个VC我也继承了RootViewController,所以只要在当前VC重写一下addPanGesture即可。
1 | - (void)addPanGesture{ |
大功告成!