Подтвердить что ты не робот

Как переключаться между скрытым и отображаемым паролем в ios?

Есть ли умный способ позволить пользователю переключаться между скрытым и отображаемым паролем в iOS/iphone UITextField, где пользователь может ввести пароль и иметь возможность скрывать его или просматривать. спасибо заранее.

4b9b3361

Ответ 1

Просто установка

.secureTextEntry = YES

wont work Я думаю, из-за ошибки (или функции), если textField имеет фокус.

Используйте что-то вроде этого, чтобы заставить его работать, если textField в настоящий момент является первымResponder

-(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

 - (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

Ответ Марио отлично работает и мне очень помог.

Но если вы используете пользовательский шрифт в текстовом поле, после того, как вы перейдете из защищенной записи в обычный текст, текст текстового поля будет нарисован с неправильным (нестандартным) шрифтом, пока пользователь не введет другой символ.

С небольшим взломом я смог исправить эту проблему, смоделировав этот ввод символов из кода.

Этот модифицированный код Mario должен работать для полей с пользовательскими шрифтами:

- (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];
    }
}

Ответ 4

Вы можете использовать свойство secureTextEntry UITextField. Если вы хотите скрыть (показать точку для каждого символа), вы можете использовать yourTextField.secureTextEntry=YES; И когда вы хотите показать использование пароля yourTextField.secureTextEntry=NO;

Ответ 5

Для Swift только значения присваивания изменяются от YES/NO до значений true/false boolean.

password.secureTextEntry = true //Visible
password.secureTextEntry = false //InVisible