UINavigationController返回手势失效问题
从iOS7开始,系统为UINavigationController提供了一个interactivePopGestureRecognizer用于右滑返回(pop),但是,如果自定了back button或者隐藏了navigationBar,该手势就失效了。

这是为什么呢?
原因
我们知道,interactivePopGestureRecognizer从手势触发到行为发生,要经过下面的阶段:

interactivePopGestureRecognizer还存在,但没有起作用,可能是delegate里被阻断了没调用target/action,或者是调用了target/action没运行动画。
经过尝试(参考别人博客),发现自定义返回按钮或者隐藏navigationBar导致的该手势未起作用是因为在delegate阶段被阻断了。
如果我们知道action的名字,则可以添加一个自定义的滑动手势,直接调用该系统action。但API文档并没有提供。
结果就是要么自己实现滑动返回的动画action,要么自己重写interactivePopGestureRecognizer的delegate以让手势继续下去,触发系统的动画action。
实现方法
那就把delegate自己实现一下吧。
新建一个类BaseNavigationController,实现delegate:

本文探讨了在iOS开发中遇到的UINavigationController返回手势失效的问题,原因是自定义返回按钮或隐藏navigationBar导致delegate阶段被阻断。解决方法包括实现自定义的滑动返回动画action或重写interactivePopGestureRecognizer的delegate。作者推荐使用第三方库SwipeBack来简化实现。
最低0.47元/天 解锁文章
877

被折叠的 条评论
为什么被折叠?



