問題タブ [uipresentationcontroller]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 子ビュー コントローラー内でカスタム UIPresentationController を使用してモーダル UIViewController を提示する
UIPresentationController
のカスタム モーダル プレゼンテーションを処理するカスタム サブクラスを作成しましたUIViewController
。これは期待どおりに機能していますが、画面全体をカバーしていない子ビュー コントローラー内からこのビュー コントローラーを表示しようとすると、問題が発生します。予想される動作は、ビューが表示元の子ビュー コントローラーの境界にモーダルに限定されて表示されることですが、代わりに、モーダルはルート ビュー コントローラーから全画面表示されます。
ビュー コントローラは次のように表示されます。
内部的には、iOS がビュー スタックを上っていき、definesPresentationContext
true に設定されたビュー コントローラーに落ち着いているように見えます。子View ControllerdefinesPresentationContext
をtrueに設定すると、これは効果がないようです。ルート ビュー コントローラーは常に選択されます。
モーダルに設定modalPresentationStyle
するとoverCurrentContext
、実際には子ビュー コントローラーの境界に限定されて表示されますが、カスタムのトランジション デリゲート アニメーションは使用されません。
ここに欠けている単純なものがあるに違いないと思いますか?
ios - プレゼンターがウィンドウから削除されていないときに、カスタム UIPresentationController がプレゼンター ビューのライフサイクル メソッド (viewDidDisappear) を呼び出さないようにするにはどうすればよいですか?
カスタム トランジションを使用して、提示された VCが画面全体をカバーせず、プレゼンターのビューが削除されないモーダル ビューを提示しています。これは、システムの既定のモーダル プレゼンテーション スタイル (別名シート/カード) に非常に似ています。
システムのデフォルトのモーダル プレゼンテーション スタイルを使用している場合viewDidDisappear
、プレゼンター VC で呼び出されることはありません。ただし、ビューが画面から削除されることはありませんが、viewDidDisappear
呼び出すとカスタムトランジションがトリガーされます。endAppearanceTransition
システムの遷移動作を模倣するにはどうすればよいですか? カスタム トランジションでbeginAppearanceTransition
andメソッドを使用するべきではありませんか?endAppearanceTransition