iOS 13 より下では、私の UITextField はキーボードを正しく起動し、ユーザーが回答を入力できるようにします。
iOS 13 以上でtextFieldDidBeginEditing()
は、テキスト フィールドをタップするとトリガーされますが、キーボードが表示されないため、ユーザーは答えを出すことができません。
デバッグコンソールはすぐにエラーをスローしませんが、最終的に次のメッセージが表示されます。これが鍵だと思います:
Could not find keyboard scene delegate for interaction view
シーンが主なものになるため、後のiOSでエラーが表示されると思います-そして、どこかでデリゲートを設定して、キーボードが最初のシーンの前面に表示されるようにする必要がありました。
これを行う方法がわかりません!
私の UITextField は完全に標準です。エラーを再現するために、SceneDelegate に次のセットアップ コードがあります。
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
let windowScene = UIWindowScene(session: session, connectionOptions: connectionOptions)
self.window = UIWindow(windowScene: windowScene)
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let initialViewController = storyboard.instantiateViewController(withIdentifier: "VC" )
self.window?.rootViewController = initialViewController
self.window?.makeKeyAndVisible()
guard let _ = (scene as? UIWindowScene) else { return }
}
実際のアプリでは、このサブルーチンを使用して、ユーザーが初めての場合にチュートリアルを起動します (つまり、開始ビュー コントローラーを変更できるようにする必要があります)。