[SWIFT] Désactiver "coller" dans un UiTextField
Bonjour,
Je rencontre un petit soucis avec un UiTextField..
J'aimerai désactiver l'option "Coller" lorsqu'on reste appuyer dessus.
J'ai testé différentes méthodes mais aucune ne fonctionne..
J'ai essayé comme ça :
override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
print(action)
if(action == #selector(UIResponderStandardEditActions.paste(_:))){
print("paste == false !")
return false
}
return super.canPerformAction(action, withSender: sender)
}
Je passe bien dedans mais je n'ai aucune action qui s'appelle : paste
Du coup, je ne passe jamais dans mon "if"
J'ai changé de méthode et testé celle la :
http://www.oodlestechnologies.com/blogs/Disable-TextFields-actions-in-Swift
Je ne passe jamais dedans, je ne sais pas pourquoi..
Bref.. avez-vous une solution simple pour empêcher le "coller" dans un textfield ?
Merci de votre aide ^^
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Et tu as écrit ce code ou ?
Dans ma class (ViewController), là où se trouve mon uiTextField..
Bah non !
Si tu avais bien lu l'article dont tu as mis le lien, tu aurais vu qu'il faut créer une sous-classe de UITextField, écrire le code là dedans et assigner cette classe à ton UITextField.
Ah alors on s'est mal compris, je croyais que tu parlais du premier exemple..
Le premier exemple, je l'ai mis dans ma class (ViewController), je passe bien dedans mais je n'ai pas d'action qui s'appelle "paste" .. du coup je passe bien dans canPerformAction mais pas dans mon if
Ensuite j'ai testé une 2eme méthode, celle du lien, qui elle, ne fonctionne pas du tout.
Je ne passe pas du tout dans le canPerformAction et j'ai bien créé une sous-classe de UITextfield et lui ai assigné cette class mais sans résultat.
J'ai donc abandonné la 2eme méthode.
Du coup, j'en reviens vous pour trouver une solution qui fonctionne ^^
Mon code va bien ici.
Voilà !
J'ai recréé un projet pour être sûr et ça ne fonctionne toujours pas..
Pourtant il n'y a pas grand chose à faire mais je ne passe jamais dans canPerformAction
Une idée ?
Sinon en utilisant la première méthode, pourquoi je n'ai rien concernant le "paste" ?
Est-ce que tu as créé un fichier Swift exprès pour la classe CustomUITextField ?
Oui oui
Est-ce que tu as changé la classe de ton UITextField dans IB?
Oui oui aussi..
C'est pour ça que je trouve ça bizarre que ça ne fonctionne pas.. y'a pourtant pas grand chose à faire !
Tu peux nous montrer un capture d'écran d'IB qui montre le UITextField et sa classe ?
Bien sur, voila
Pourquoi tu veux empêcher les gens de coller un mot de passe ?
Tu as essayé de supprimer l'UITextField, arrêter et redémarrer Xcode et le remplacer ?
C'est dans le cahier des charges, c'est comme ça ^^
Ouai, j'en ai même recréer un autre créer autre complètement différent pour le test et toujours pareil, je passe pas dans ma classe perso
Par contre, quand j'utilise la première méthode, avec un override dans ma class principale, je passe bien dedans sauf que je n'ai pas l'action "paste", j'ai plein d'autre action par contre :
cut:
copy:
select:
selectAll:
delete:
_promptForReplace:
_transliterateChinese:
_showTextStyleOptions:
_lookup:
_define:
_addShortcut:
_accessibilitySpeak:
_accessibilitySpeakLanguageSelection:
_accessibilityPauseSpeaking:
_share:
makeTextWritingDirectionRightToLeft:
makeTextWritingDirectionLeftToRight:
Normal, tu tombes dans le
canPerformAction
relatif à tonViewController
.Peux tu ajouter une méthode qui attrape l'événement editingChanged dans ta classe
CustomUITextField
voir si ta classe est bien pris en compte par XIB ? Tu écris quelque chose dans ton textfield et normalement tu devrais pouvoir intercepter l'événement. Ca nous donnera une indication supplémentaire sur le souci que tu rencontres.Bon, j'ai tout recommencer pour la Xème fois et maintenant ça fonctionne, j'arrive à faire ce que je veux..
Je ne sais pas où je me trompais avant mais là j'ai peur d'y retoucher donc on va dire que c'est réglé ^^
Merci de votre aide
Surement XIB qui ne se basait pas sur la bonne classe...