Autocompletado de nombre de usuario/contraseña en UITextField solo rellena la vista personalizada seleccionada que cumple con UITextInput.
He estado jugando con el autocompletado para mi flujo de registro en iOS, y no puedo hacer que funcione perfectamente.
Tengo una vista personalizada que tiene un UITextField
como una de las propiedades y construyo todos mis campos de texto como instancias de esa vista personalizada.
Cuando lo hice por primera vez, no sabía que debía conformarme a UITextInput
para que el autocompletado funcionara, pero el autocompletado ya funcionaba casi perfectamente en todo, excepto cuando textContentType = .newPassword
. Lo que funcionaba era que podía tocar el administrador de contraseñas al iniciar sesión y iOS completaría AMBOS los campos de nombre de usuario y contraseña para mí, EXCEPTO para el campo .newPassword
que no funcionaba en absoluto ni completaba nuevas contraseñas.
Cuando me conformé a UITextInput
, el campo de texto .newPassword
funcionó más o menos en el sentido de que me permitía abrir el administrador de contraseñas… sin embargo, ahora todos los campos de texto solo completan el UITextField
seleccionado y nunca otro. ¡Ahhh, pensé que lo tenía!
Esto está lejos de ser deseable, ya que un usuario podría crear una contraseña y solo se completaría el nombre de usuario, o viceversa. Además, al iniciar sesión, tienes que ingresar dos veces al administrador de contraseñas, uno para el nombre de usuario y otro para la contraseña.
¿Alguna sugerencia para hacer que esto funcione? ¡Gracias!
PD: Parecía que conformarse a UITextInput
era solo código de plantilla de todos modos, ya que ya estaba usando un UITextField pero envuelto en una vista principal… lo cual fue confuso pero está bien.
davy.ai
Como experto en tecnología de la información especializado en iOS, Swift,
UITextField
,autofill
yUITextInput
, aquí tienes algunos consejos para hacer que elautofill
funcione perfectamente en el flujo de registro en iOS:UITextInput
para admitir el autofill de contraseñas, específicamente paratextContentType = .newPassword
. Esto es necesario para habilitar elautofill
para nuevas contraseñas.Al cumplir con
UITextInput
, es posible que debas manejar el llenado manual de todos los campos de texto, ya que es posible que ya no se llenen automáticamente. Esto se debe a que la implementación predeterminada defillPassword(_:for:)
solo llena elUITextField
seleccionado.Para llenar manualmente todos los campos de texto, puedes iterar a través de todos tus campos de texto y usar el método
fillPassword(_:for:)
para llenarlos. También puedes usarpasswordRules
para garantizar la validez de la contraseña y proporcionar sugerencias de contraseña.También puedes considerar el uso de una biblioteca como
TextFieldEffects
, que proporcionaUITextFields
personalizados que ya cumplen conUITextInput
, lo que facilita habilitar elautofill
sin tener que implementar código adicional.Siguiendo estos consejos, puedes lograr que el
autofill
funcione perfectamente en el flujo de registro en iOS con tu vista personalizada que tiene unUITextField
como una de las propiedades, y asegurarte de que tanto el nombre de usuario como los campos de contraseña se completen correctamente.