使用 @FocusState 和 .onSubmit 键盘弹起

Gas*_*are 11 keyboard swift swiftui

我正在尝试在我的应用程序中实施@FocusState以改进登录流程。实际上,代码工作正常,但每次.onSubmit都会触发键盘弹跳。我不明白我是否做错了什么或者这是一个错误。

    struct FocusedFieldTest: View {
    enum FocusedField {
        case username, password, email
    }
    
    @FocusState private var focusedField: FocusedField?
    
    @State private var email = ""
    @State private var username = ""
    @State private var password = ""
    
    var body: some View {
        NavigationStack {
            Form {
                TextField("Enter your email", text: $email)
                    .focused($focusedField, equals: .email)
                    .submitLabel(.continue)
                
                TextField("Enter your username", text: $username)
                    .focused($focusedField, equals: .username)
                    .submitLabel(.continue)
                
                SecureField("Enter your password", text: $password)
                    .focused($focusedField, equals: .password)
                    .submitLabel(.done)
            }
            .onSubmit {
                switch focusedField {
                case .email:
                    focusedField = .username
                case .username:
                    focusedField = .password
                default:
                    focusedField = nil
                }
            }
            .navigationTitle("Test")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

mpi*_*sal 1

这是 iOS 16 中的一个错误,自第一个测试版以来就一直在发生。你的做法是正确的。您可以尝试在 iOS 15 上运行相同的东西,它会像您期望的那样工作。