SwiftUIでアプリ開発時にビルド後一発目のキーボード表示に時間がかかっており、
対策はないか調べたので備忘録として残します。
原因
調べてみると結構旧知の事実現象みたいで、大きく分けると2つ原因があった。
①初回リリースの読み込み
初回起動時にキーボードに関連するリソースを読み込む必要あり、
これに時間がかかることで遅延が発生してしまう
②デバック
デバックでの起動時や、デバック中に遅延が起きる報告が多い
たしかにリリース版で動作させると軽くなった
リリースでは問題ないため、この原因は無視する
対策
主に①について対策する
アプリ起動時、またはTextFieldを表示した際に、あらかじめプレロードしておく方法が一般的な対策
#didFinishLaunchingWithOptions などでアプリの終了を検知して、
UITextFieldのfocusを一時的に有効化することでプレロードできる
let lagFreeField = UITextField()
self.window?.addSubview(lagFreeField)
lagFreeField.becomeFirstResponder()
lagFreeField.resignFirstResponder()
lagFreeField.removeFromSuperview()
参考
Super slow lag/delay on initial keyboard animation of UITextField