在 SwiftUI 视图中的 TextField 后面使用多个 SecureField 时出现奇怪的行为

Gro*_*top 8 swiftui

注意:该错误已在 Xcode 13.0 beta 3 中修复

当我在视图中跟踪文本字段时尝试使用多个安全字段时,我遇到了非常奇怪的行为。尝试在其中一个 SecureField 中输入文本会在一个字符处停止,该字段会变成黄色并显示“强密码”,并在第二个 SecureField 中进行复制。在 iOS 14.2 上,Xcode 12.2 中的 Xcode 预览和模拟器中会发生这种情况。

这是演示该问题的最小示例:

struct SecureFieldTestView: View {

    @State var displayName: String = ""
    @State var password = ""
    @State var passwordVerifiation = ""

    var body: some View {
        VStack {
            TextField("Display name", text: $displayName)
            SecureField("Password", text: $password)
            SecureField("Verify Password", text: $passwordVerifiation)

        }
        .padding()
    }
}

struct SecureFieldTestView_Previews: PreviewProvider {
    static var previews: some View {
        SecureFieldTestView()
    }
}
Run Code Online (Sandbox Code Playgroud)

模拟器问题截图

运行模拟器时控制台显示以下错误:

[AutoFill] Cannot show Automatic Strong Passwords for app bundleID: <REDACTED BY ME> due to error: iCloud Keychain is disabled
[Assert] View <(null):0x0> does not conform to UITextInput protocol
Run Code Online (Sandbox Code Playgroud)

我尝试将 SecureFields 包装到它们自己的 VStack{} 中,并将它们全部包装到 Form{} 中,但问题仍然存在。

我是否遗漏了一些明显的东西,或者这是 SDK 中的错误?

Gro*_*top 1

经过进一步调查,还出现了另一个问题;软件键盘要经过一段延迟后才会出现。在软件键盘出现之前在 SecureFields 中输入文本始终会产生该问题。等待软件键盘出现可以解决奇怪的行为。

奇怪的是,当设备/模拟器未登录 iCloud 时,键盘出现的延迟似乎会发生;设备登录时不会出现键盘出现延迟和 SecureField 问题。