UIPresentationController
のカスタム モーダル プレゼンテーションを処理するカスタム サブクラスを作成しましたUIViewController
。これは期待どおりに機能していますが、画面全体をカバーしていない子ビュー コントローラー内からこのビュー コントローラーを表示しようとすると、問題が発生します。予想される動作は、ビューが表示元の子ビュー コントローラーの境界にモーダルに限定されて表示されることですが、代わりに、モーダルはルート ビュー コントローラーから全画面表示されます。
ビュー コントローラは次のように表示されます。
let vc = CustomViewController()
vc.transitioningDelegate = customTransitioningDelegate
vc.modalPresentationStyle = .custom
present(vc, animated: true, completion: nil)
内部的には、iOS がビュー スタックを上っていき、definesPresentationContext
true に設定されたビュー コントローラーに落ち着いているように見えます。子View ControllerdefinesPresentationContext
をtrueに設定すると、これは効果がないようです。ルート ビュー コントローラーは常に選択されます。
モーダルに設定modalPresentationStyle
するとoverCurrentContext
、実際には子ビュー コントローラーの境界に限定されて表示されますが、カスタムのトランジション デリゲート アニメーションは使用されません。
ここに欠けている単純なものがあるに違いないと思いますか?