SwiftUI SecureField

SecureField 是 SwiftUI 中的安全输入控件,可用于输入密码
iOS 13.0+iPadOS 13.0+macOS 10.15+Mac Catalyst 13.0+tvOS 13.0+watchOS 6.0+

当您想要类似于 TextField 的行为但不希望用户的文本可见时,请使用 SecureField。 通常,您使用它来输入密码和其他敏感信息。

SecureField 使用与字符串值的绑定,以及在用户提交编辑时执行的闭包,例如通过按下 Return 键。 该字段会在每次击键或其他编辑时更新绑定字符串,因此您可以随时从另一个控件(例如“完成”按钮)读取其值。

以下示例显示了绑定到字符串密码的 SecureField。 如果用户在安全字段中提交他们的编辑,则 onCommit 闭包将密码字符串发送到 handleLogin() 方法。

@State private var username: String = ""
@State private var password: String = ""

var body: some View {
    TextField(
        "用户名",
        text: $username)
        .autocapitalization(.none)
        .disableAutocorrection(true)
        .border(Color(UIColor.separator))
    SecureField(
        "密码",
        text: $password
    ) {
        handleLogin(username: username, password: password)
    }
    .border(Color(UIColor.separator))
}
两个垂直排列的文本框,邮箱和密码

表单提示

可以为安全字段提供明确提示,以指导用户应该提供什么文本。 安全字段出现的上下文决定了何时何地可以使用提示和标签。 例如,macOS 上的表单将始终将标签放置在字段的前缘旁边,并在可用时将提示用作字段本身的占位符文本。 在 iOS 上的相同上下文中,提示或标签将用作占位符文本,具体取决于是否提供了提示。

Form {
    TextField(text: $username, prompt: Text("Required")) {
        Text("用户名")
    }
    SecureField(text: $username, prompt: Text("Required")) {
        Text("密码")
   }
}