【SwiftUI】toolbar(keyboard)が表示されない

SwiftUI

iOS15から使用できるkeyboardに表示するtoolbarは、
他の位置とは異なり基本的にどこでも使用できます。
しかし表示されないパターンがありましたのでメモを残しておきます。

表示不可のパターン

SceneDelegateを使用しNavigationView外にあるパターンです。
かなり限定的なパターンなので新規開発では滅多に無いと思います。

しかし、SwiftUIの2.0系からはありませんが、
それ以前からの場合はSceneDelegateを継続して使用している可能性があります。

また、私の場合はどうしてもHomeIndicatorAutoHiddenを使用したかった為、
やむを得ずSceneDelegateを追加して使用した為引っ掛かりました。

対応表

toolbarの使用可否は以下の様になっています。

NavigationView外NavigationView内
SceneDelegate無し
(WindowGroup下)
keyboardのみ可全て可
SceneDelegate有り
WindowGroup外)
全て不可全て可

原因の考察

どうやらWindowGroup下にあるかNavigationView下にあるのがtoolbarが動作する条件のようです。
SceneDelegateを使用した場合はWindowGroup下に無いので動作しません。
NavigationViewがあればSceneDelegateを使用しても動作します。
なお他の位置に表示する場合はNavigationViewが必須なので問題ありません。

コメント

タイトルとURLをコピーしました