2010-07-19 7 views

Respuesta

9

Suponiendo Bobby B está justo en que es imposible cambiar el carácter secreto,
Por la presente, presentes,
sin guarantuee alguna y con todas las advertencias que se aplican,
ya que este es un horribles kludge lo que sin duda le dará dolores de cabeza en algún momento,
esperando no ser downvoted demasiado para él:

/* 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 */ 

Indica tu delegado UITextField 's a la clase que contiene esta función.

Solo asegúrese de tener self.backing que es NSString* retenido. Se necesitó la copia & paste kludge para conservar la posición del cursor.

No sé nada sobre pegar, esto fue una suposición descabellada y funciona, pero es necesario que averigüe si esto puede ocasionar algún problema al respecto. Probé un poco y no pareció dar ningún problema.

+0

Es muy probable que falle la autocorrección y cierta teclados internacionales (en particular, la autocorrección no parece llamar a textField: shouldChangeCharactersInRange :). –

+2

Creo que la autocorrección para la entrada segura es una mala idea ;-) y creo que llama 'shouldChangeCharactersInRange', IIRC de un proyecto con una entrada limitada de píxeles. – mvds

+0

gracias. ¿Se aconseja cambiar los personajes? ¿Está violando las pautas de la interfaz de usuario de iphone? – thndrkiss

0

No creo que esto sea posible, y estoy basando eso en la falta de documentación encontrada en los documentos para UITextInputTraits (específicamente para secureTextEntry).

Sin embargo, podría estar equivocado, interesado en saber si alguien ha hecho esto antes.

¡Buena suerte!

7

También puede simplemente cambiar la fuente ...

Si cambia el carácter Unicode 'bala' (U + 2022) se puede personalizar el carácter secreto. Hay un montón de editor de fuentes gratis por ahí. utilizo éste http://www.cr8software.net/typex.html

Para añadir fuentes personalizadas a su proyecto, echa un vistazo - this link

Es muy fácil

entonces usted no tiene que codificar nada que funciona.

0

Simplemente, permite la propiedad segura en IB o mediante el programa.

Cuestiones relacionadas