2010-07-19 6 views

Répondre

9

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.

+0

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 :). –

+2

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

+0

merci. Est-ce conseillé de changer les caractères? est-ce que cela viole les directives de l'IU? – thndrkiss

0

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!

7

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.

0

Simplement, autorisez la propriété Secure dans IB ou via un programme.

Questions connexes