1. ホーム
  2. ios

[解決済み] iOS 13でシートが剥がされたことを検知する機能

2022-05-12 12:37:41

質問

iOS 13以前は、提示されたビューコントローラーが画面全体を覆っていました。そして、解任されると、親ビューコントローラーの viewDidAppear 関数が実行されました。

iOS 13では、デフォルトでビューコントローラがシートとして表示されるようになり、カードが基盤となるビューコントローラを部分的にカバーすることになります。 viewDidAppear が呼び出されることはありません。なぜなら、親ビューコントローラが実際に消えることはなかったからです。

の方法はありますか? 提示されたビューコントローラーシートが解除されたことを検出する。 ? 親ビューコントローラでオーバーライドできる他の関数 ある種のデリゲートを使用するのではなく ?

どのように解決するのですか?

<ブロッククオート

表示されているビューコントローラーシートが解除されたことを検知する方法はありますか?

はい。

デリゲートのようなものを使うのではなく、親ビューコントローラーでオーバーライドできる他の関数があるのでしょうか?

いいえ、ある種のデリゲートです。自分自身をプレゼンテーションコントローラのデリゲートとし、以下をオーバーライドします。 presentationControllerDidDismiss(_:) .

https://developer.apple.com/documentation/uikit/uiadaptivepresentationcontrollerdelegate/3229889-presentationcontrollerdiddismiss


フルスクリーンかどうかにかかわらず、提示されたビューコントローラーが解除されたことを知らせる一般的なランタイム生成イベントがないのは、確かに厄介です。しかし、フルスクリーンでない提示ビューコントローラーは常に存在するので、新しい問題ではありません。ただ、iOS 13では、その数が増えただけなのです。このトピックについては、別の場所で別の質問と回答を捧げています。 統一されたUIViewControllerのquot;最前面になった"検出? .