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 に答える