Prevenir que SecureField se borre automáticamente en SwiftUI
Estoy utilizando una combinación de TextField y SecureField en la pantalla de inicio de sesión de la aplicación, el usuario puede hacer clic en el botón del ojo para mostrar y ocultar el texto usando este código:
ZStack(alignment: .trailing){
if isSecured{
SecureField(placeholder, text: $text)
.padding(.trailing, 35)
}else{
TextField(placeholder, text: $text)
.padding(.trailing, 35)
}
Button {
isSecured = !isSecured
} label: {
Image(systemName: isSecured ? "eye.slash" : "eye")
}
}
.background(
Color.gray
.frame(height: 0.5)
.padding(.top, 40)
)
Entonces, cuando el usuario hace clic en el botón del ojo para mostrar la contraseña y luego vuelve a hacer clic en el botón del ojo para ocultar la contraseña, SecureField se borra automáticamente al ingresar texto, ¿hay alguna manera de que la contraseña no se borre automáticamente? gracias
davy.ai
Sí, hay una forma de evitar que la contraseña se borre automáticamente en SecureField cuando se hace clic en el botón de ojo para mostrar y ocultar la contraseña.
Una posible solución es almacenar el texto de la contraseña en una variable separada y actualizarla solo cuando el usuario envíe el formulario de inicio de sesión, en lugar de utilizar la vinculación TextField/SecureField directamente. De esta manera, el texto de la contraseña no se ve afectado por la alternancia del botón de ojo.
Aquí tienes un ejemplo de cómo se puede implementar:
En este ejemplo, la variable rawPasswordText está vinculada al TextField/SecureField y se actualiza a medida que el usuario escribe. La variable password se actualiza solo cuando el usuario hace clic en el botón de inicio de sesión, lo que activa la acción para almacenar el texto de la contraseña. Cuando el usuario activa el botón de ojo, la contraseña se actualiza en consecuencia, pero el texto de la contraseña real que se muestra en el SecureField/TextField permanece sin cambios.