2012-12-17 18 views

risposta

20

semplicemente impostando

.secureTextEntry = YES 

abituato lavoro penso a causa di un bug (o un funzione), se il campo di testo è attivo.

Usa qualcosa di simile per farlo funzionare anche se il textField è attualmente firstResponder

-(void) toggleTextFieldSecureEntry: (UITextField*) textField { 
    BOOL isFirstResponder = textField.isFirstResponder; //store whether textfield is firstResponder 

    if (isFirstResponder) [textField resignFirstResponder]; //resign first responder if needed, so that setting the attribute to YES works 
    textField.secureTextEntry = !textField.secureTextEntry; //change the secureText attribute to opposite 
    if (isFirstResponder) [self.textField becomeFirstResponder]; //give the field focus again, if it was first responder initially 
} 
2

È possibile utilizzare la proprietà secureTextEntry di UITextField. Quando si vuole nascondere (visualizza del punto per ogni personaggio) è possibile utilizzare yourTextField.secureTextEntry=YES; E quando si desidera mostrare l'utilizzo della password yourTextField.secureTextEntry=NO;

1

Per Swift, solo i valori di assegnazione cambiano da YES/NO per falsi valori vero/booleani.

password.secureTextEntry = true //Visible 
password.secureTextEntry = false //InVisible 
6
- (IBAction)ShowPass:(UIButton *)sender { 
    if (self.password.secureTextEntry == YES) { 
    [ self.showPass setTitle:@"HIDE" forState:(UIControlStateNormal)]; 

    self.password.secureTextEntry = NO; 

} 

else 
{ 
    [ self.showPass setTitle:@"SHOW" forState:(UIControlStateNormal)]; 
     self.password.secureTextEntry = YES; 
} 


} 
3

risposta di Mario funziona bene e mi ha aiutato molto.

Ma se si utilizza carattere personalizzato in un campo di testo, una volta che si passa da ingresso sicuro in testo normale, il testo del campo di testo saranno rappresentate con carattere errato (non personalizzato) fino a quando l'utente ha immesso un altro personaggio.

Con un piccolo trucco sono riuscito a risolvere questo problema simulando l'immissione di caratteri dal codice.

Questo codice modificato di Mario dovrebbe funzionare per i campi con i font personalizzati:

- (void)toggleTextFieldSecureEntry:(UITextField *)textField { 
    BOOL isFirstResponder = textField.isFirstResponder; 

    if (isFirstResponder) { 
     [textField resignFirstResponder]; 
    } 

    textField.secureTextEntry = !textField.secureTextEntry; 

    if (isFirstResponder) { 
     [textField becomeFirstResponder]; 
    } 

    // When using custom font and changing from secure entry to plain text, the text is initially drawn with wrong font 
    // until a next character is input by user. This hack fixes the font immediatelly (simulate add and delete character) 
    if (!textField.isSecureTextEntry) { 
     [textField insertText:@"x"]; 
     [textField deleteBackward]; 
    } 
} 
Problemi correlati