我正在尝试将一个特定视图控制器推送到导航控制器的导航堆栈时实现自定义id <UIViewControllerAnimatedTransitioning>
对象。
但是,我发现,这样做会阻止UINavigation控制器使用默认的交互式转换,甚至在不使用自定义转换的视图控制器上。
我不知道为什么会这样。
经过进一步调查,我发现从方法中返回nil
- (id <UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController
animationControllerForOperation:(UINavigationControllerOperation)operation
fromViewController:(UIViewController *)fromVC
toViewController:(UIViewController *)toVC
以某种方式禁用默认的交互式转换。
如何在某些情况下继续使用UINavigationController的默认交互式转换,同时在其他实例中使用自定义Transition对象?
答案 0 :(得分:0)
这是一个blog post详细说明可能的解决方案。我没有测试过。似乎是一个非常糟糕的解决方法。正如作者所说,如果Apple改变了事情,它可能会破裂,但是嘿。
引用:
我最终做的是创建一个新的实例
UIScreenEdgePanGestureRecognizer
,使用左边缘配置它 设置与我们完全相同的目标/动作interactivePopGestureRecognizer
,换句话说,是{的实例_UINavigationInteractiveTransition
和行动handleNavigationTransition:
。最后将其添加到UINavigationControllers
查看。有一点-valueForKey:
和。{NSSelectorFromString()
在最终的解决方案中,我并不感到自豪 但它完美无缺。记住在实施时要安全 像这样的解决方案,Apple改变了一些东西,我们都知道。