2

我正在尝试在我的 iPhone 应用程序中创建一个自定义容器控制器。我希望这个容器能够实现自定义转换,就像 iOS 7 中 TabBarControllers 和 NavigationControllers 的默认行为一样。我已经成功地能够为我的转换添加自定义动画,但是在添加交互逻辑时遇到了麻烦。

作为过渡过程的一部分,我必须创建一个 TransitionContext。这通常由系统创建,但由于我使用的是自定义容器控制器,因此我创建了自己的符合 UIViewControllerContextTransitioningProtocol 的类。当触发绑定到转换的手势识别器时,我尝试通过调用开始转换:

[self.horizontalSwipeInteractionController startInteractiveTransition:transitionContext];

其中 self.horizo​​ntalSwipeInteractionController 继承自 UIPercentDriveInteractiveTranstion。不幸的是,此时我收到以下错误:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[PrivateTransitionContext _animator]: unrecognized selector sent to instance 0x14654a80

我不明白现在该怎么办。该文档没有提供有关如何使用自定义容器控制器实现自定义转换的示例。

4

1 回答 1

1

不幸的是,UIPercentDriveInteractiveTranstion使用私有 API。

Alek Åström 在他的iOS Nomad 博客上写到了这一点,他在其中介绍了如何创建交互式自定义容器控制器(添加了重点):

...我们可以看到 UIPercentDrivenInteractiveTransition 在我们的上下文中寻找动画师,调用一个未记录的方法。方便的是,所有 Apple 制作的转换上下文都实现了这个方法,这就是百分比驱动转换可以触发动画的方式。不幸的是,这意味着我们不能将这个类用于我们自己的自定义容器视图控制器。

他建议AWPercentDrivenInteractiveTransition用作替代品。

于 2014-08-12T17:42:06.843 回答