久々の投稿です。パッと見ではヒットしなかった話題なのですが、ハマる人もいる気がするので軽めに書きます。
何が起こったか
UIViewControllerTransitioningDelegate
を利用してトランジションアニメーションを導入していたアプリをXcode11でビルドしたところアプリが落ちないのに遷移が正常に動作せず、アプリが操作不可になる現象が発生した
前提知識
iOS13からモーダルのデフォルトの挙動がハーフモーダルのような形に変化したのはよく知られていることだと思います。
これにあわせてsegueの遷移には
このように今までのTransitionの設定に加えPresentationという項目が増えているのがわかります。ここを設定することで今までのようなフルスクリーンのモーダルに変更したりすることができます。
解決法
この増えた設定項目が肝でした。カスタムトランジションの場合、このPresentationとともに増えたコンテキストの概念が迷子になるらしくそれが影響して遷移がうまく完了しないということのようでした。
ですのでシンプルにこのようなコードを入れてあげると解決します。
let viewController = NextViewController.instatiate()
viewController.modalPresentationStyle = .currentContext
present(viewController, animated: true, completion: nil)
このように明示的に modalPresentationStyle
を設定すれば解決しました。
ちなみに僕の場合はcurrentContext
もしくはfullScreen
で動くようになりましたが、これはトランジションの種類にもよるかと思います。
ぜひ同じ症状にあった人は様々な項目を試してみてください。(本当は意味的にどれを選ぶべきとかありそうですが一旦...笑)