web-dev-qa-db-fra.com

Superposition de mots de passe forte sur Uitextfield

J'ai face à une superposition étrange sur UITextField. J'utilise le champ de type textContentType = .password et isSecureTextEntry = true. J'ai également un bouton oculaire pour afficher les caractères de mot de passe avec le changement isSecureTextEntry = false.

Lorsque je fais que mes caractères de mot de passe sont visibles, mais lorsque je tape au moins un nouveau caractère Le mot de passe fort apparaît et ce n'est pas un moyen de le cacher.

Qu'est-ce que c'est et comment empêcher de le montrer?

strong password overlay

// ÉDITER:

J'ai fait de l'extension pour désactiver la mise à l'autofill et ça marche:

extension UITextField {
    func disableAutoFill() {
        if #available(iOS 12, *) {
            textContentType = .oneTimeCode
        } else {
            textContentType = .init(rawValue: "")
        }
    }
}
17
DennyDog

Les autres réponses font que le texte soit révélé à l'utilisateur, qui n'est pas idéal IMO.

Pour résoudre ce problème:

Définissez le type de contenu du champ Mot de passe sur: .neTimePAD, définissez une entrée de texte sécurisée sur le champ sur le champ à: FALSE, puis ajoutez le suivant (ou quel que soit le travail de la saveur pour vous):

func textFieldDidBeginEditing(_ textField: UITextField) { 
    if(textField == self.passwordTextField) { self.passwordTextField.isSecureTextEntry = true } }

Note latérale - J'ai essayé de mettre ça ^ Changement dans la viewwillappear, mais la boîte jaune laide apparaît toujours.

C'était la seule façon de conserver le texte sécurisé/caché initialement (vous pouvez ensuite le basculer avec un bouton Afficher/Masquer si vous le souhaitez et le non-sens autocomplètes de Apple ne revient pas )

0
Joel