Est-il possible de changer le mot de passe sécurisé affiché?Modifier le caractère de mot de passe sécurisé dans UITextfield
Répondre
Si l'on suppose Bobby B est juste qu'il est impossible de changer le caractère secret
par la présente, présente,
sans guarantuee que ce soit et avec tous les avertissements qui sont applicables,
puisque c'est un bidouille horribles qui vous donnera certainement des maux de tête à un moment donné,
en espérant ne pas être downvoted trop pour elle:
/* don't ever use this PROOF OF CONCEPT CODE for production use */
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (self.backing == nil) self.backing = @"";
static BOOL pasting = false;
if (!pasting)
{
self.backing = [self.backing stringByReplacingCharactersInRange:range withString:string];
NSLog(@"backing: %@",self.backing);
if ([string length] == 0) return YES; // early bail out when just deleting chars
NSString *sec = @"";
for (int i=0;i<[string length]; i++) sec = [sec stringByAppendingFormat:@"■"];
pasting = true;
[[UIPasteboard generalPasteboard] setString:sec];
[textField paste:self];
return NO;
} else {
pasting = false;
return YES;
}
}
/* you have been warned */
Définir vos délégué de UITextField
à la classe contenant cette fonction.
Assurez-vous simplement que vous avez self.backing
qui est un NSString*
retenu. La copie & coller kludge était nécessaire pour conserver la position du curseur. Je ne sais rien sur le collage, c'était une conjecture sauvage et cela fonctionne, mais vous avez besoin de savoir si cela peut conduire à un problème à cet égard. J'ai testé un peu et ça ne semblait pas poser de problème.
Il est très probable qu'il échoue pour l'autocorrection et certains claviers internationaux (en particulier, l'auto-correction ne semble pas appeler textField: shouldChangeCharactersInRange :). –
Je pense que l'autocorrection pour l'entrée sécurisée est une mauvaise idée de toute façon ;-) et je pense qu'elle appelle 'shouldChangeCharactersInRange', IIRC d'un projet avec une entrée limitée en pixels. – mvds
merci. Est-ce conseillé de changer les caractères? est-ce que cela viole les directives de l'IU? – thndrkiss
Je ne pense pas que ce soit possible, et je me base sur un manque de documentation dans les documents pour UITextInputTraits (spécifiquement pour secureTextEntry).
Peut-être tort cependant - intéressé d'entendre si quelqu'un a déjà fait cela auparavant.
Bonne chance!
Vous pouvez aussi simplement changer la police ...
Si vous modifiez le caractère unicode 'BULLET' (U + 2022), vous pouvez personnaliser le caractère secret. Il y a beaucoup d'éditeur de polices gratuit là-bas. J'utilise celui http://www.cr8software.net/typex.html
Pour ajouter des polices personnalisées à votre projet, consultez - this link
Il est assez facile
Ensuite, vous n'avez pas à coder quoi que ce soit ça marche.
Simplement, autorisez la propriété Secure dans IB ou via un programme.
http://stackoverflow.com/questions/24531274/how-do-i-stop-uitextfield-secure-text-showing-characters/29944670#29944670 – the1pawan