1.手势失效。(手势可能被清空,在一设置上根控制器的时候就打印一下手势看有没有这个手势)
2.手势的代理做了一些事情,导致手势失效。(将代理对象置空),这个方法可行。但这个时候也遇到了BUG
1.在根控制器上滑动返回的时候再次点击发现界面卡住了,变成程序假死状态,发现只要在根控制器上滑动手势就会假死,根据这个特点,我们只要将在手势代理方法里对代理方法进行控制,让它在不是根控制器的时候生效即可。
全屏滑动返回:
首先,我们为什么不能全屏滑动返回。
分析猜测:1.首先我们看一下导航控制器中的手势,发现这个手势继承自UIPanGesture,并且拥有自己的属性设置滑动边缘的属性,尝试设置这个属性,为none,希望能够将滑动边缘设置成全部,发现一设置竟然,全屏滑动手势失效,显然不是我们希望的那样。
2.只有panGesture才具有全屏幕拖拽的功能,监听panGesture这个手势,观察我们打印出来的self.interactiveGesture,分析打印出来的信息
发现调用UIScreenEdgGesture手势就会触发UINavigationInterActiveTransaition(手势的代理)这个对象的action方法,就具有滑动返回方法,巧妙的利用系统的方法实现滑动返回,可是target需要UINavigationInterActiveTransaition这个类,所以我们只需要传进去这个代理即可,然后将pan手势加在导航条的view上即可,这时候还是会出现假死状态,将pan手势的代理设置给自己,控制什么时候触发代理事件,最后使用了自己的手势,那么之前的系统的self.interactiveGesture就没用了,所以把它废掉就好了
self.interactivePopGestureRecognizer.enabled = NO;