2012-12-17 10 views

Odpowiedz

20

Wystarczy ustawienie

.secureTextEntry = YES 

przyzwyczajenie praca myślę z powodu błędu (lub funkcja), jeśli pole tekstowe jest aktywne.

użyć czegoś takiego, aby to działało również wtedy, gdy textField jest obecnie 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

Możesz użyć właściwości secureTextEntry z UITextField. Gdy chcesz ukryć (pokazać kropki dla każdego znaku) można użyć yourTextField.secureTextEntry=YES; A kiedy chcesz pokazać Użyj hasła yourTextField.secureTextEntry=NO;

1

Dla Swift tylko wartości przypisania zmienić TAK/NIE prawda/fałsz wartości logicznych.

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

odpowiedź Mario działa dobrze i bardzo mi pomogło.

Jeśli jednak w polu tekstowym zostanie użyta niestandardowa czcionka, po zmianie z bezpiecznego wpisu na zwykły tekst, tekst pola tekstowego zostanie narysowany za pomocą niewłaściwej (nie niestandardowej) czcionki, dopóki użytkownik nie wprowadzi innego znaku.

Z małym hackem udało mi się naprawić ten problem, symulując wprowadzanie znaków z kodu.

Ten zmodyfikowany kod Mario powinien pracować na polach z czcionkami niestandardowe:

- (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]; 
    } 
} 
Powiązane problemy