UINavigationController的interactivePopGestureRecognizer无法正常工作

时间:2014-05-29 23:05:59

标签: ios objective-c cocoa-touch uiviewcontroller uinavigationcontroller

我正在尝试将一个特定视图控制器推送到导航控制器的导航堆栈时实现自定义id <UIViewControllerAnimatedTransitioning>对象。

但是,我发现,这样做会阻止UINavigation控制器使用默认的交互式转换,甚至在不使用自定义转换的视图控制器上

我不知道为什么会这样。

经过进一步调查,我发现从方法中返回nil

- (id <UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController
                               animationControllerForOperation:(UINavigationControllerOperation)operation
                                            fromViewController:(UIViewController *)fromVC
                                              toViewController:(UIViewController *)toVC

以某种方式禁用默认的交互式转换。

如何在某些情况下继续使用UINavigationController的默认交互式转换,同时在其他实例中使用自定义Transition对象?

1 个答案:

答案 0 :(得分:0)

这是一个blog post详细说明可能的解决方案。我没有测试过。似乎是一个非常糟糕的解决方法。正如作者所说,如果Apple改变了事情,它可能会破裂,但是嘿。

引用:

  

我最终做的是创建一个新的实例   UIScreenEdgePanGestureRecognizer,使用左边缘配置它   设置与我们完全相同的目标/动作   interactivePopGestureRecognizer,换句话说,是{的实例   _UINavigationInteractiveTransition和行动handleNavigationTransition:。最后将其添加到   UINavigationControllers查看。有一点-valueForKey:和。{   NSSelectorFromString()在最终的解决方案中,我并不感到自豪   但它完美无缺。记住在实施时要安全   像这样的解决方案,Apple改变了一些东西,我们都知道。