Поле UITextField SecureTextEntry меняет клавиатуру с цифровой на обычную. - PullRequest
2 голосов
/ 29 июня 2011

У меня есть textField, созданный в IB. Я установил тип клавиатуры на Numeric Pad в IB. Когда я делаю secureTextEntry = YES в методе -(void)textFieldDidBeginEditing:(UITextField *)textField, моя клавиатура меняется с цифровой на обычную. Я даже пытался заставить клавиатуру быть числовой программно, но все равно она не меняется. Я установил это так

-(void)textFieldDidBeginEditing:(UITextField *)textField{
    if(textField == self.activationCodeTextField){
        self.activationCodeTextField.secureTextEntry = YES;
        self.activationCodeTextField.keyboardType = UIKeyboardTypeNumberPad;
    }
}

FYI, Я не могу установить безопасность textField в IB, потому что у меня есть текст подсказки, такой как «4 цифры», отображаемый пользователю в текстовом поле, пока он не начнет печатать в текстовом поле. Как только он начнет печатать в текстовом поле, я хочу, чтобы записи были безопасным текстом, чтобы он отображал только * вместо реальных символов, которые он вводит.

Не могли бы вы сообщить мне, что не так в том, что я делаю?

У меня также есть еще два запроса

  1. У меня есть текстовое поле, где у меня есть текст по умолчанию (например, текст подсказки). Я хочу, чтобы этот текст подсказки отображался пользователю до того момента, когда он начнет печатать. Я не хочу очищать этот текст, когда пользователь нажимает на текстовое поле, а затем текст по умолчанию удаляется. но я хочу, чтобы этот текст отображался до того момента, пока он фактически не начнет печатать что-то на клавиатуре, затем необходимо очистить значение по умолчанию и затем ввести текст, введенный в текст, для отображения в текстовом поле. Возможно ли это достичь?

  2. Можно ли программно установить позицию курсора в текстовое поле для первого символа. Это необходимо, потому что у меня есть текст по умолчанию (текст подсказки), и курсор находится в конце текста. Я хочу, чтобы курсор был в начале текста. Как сделать это возможным программно?

1 Ответ

8 голосов
/ 30 июня 2011

Вы пытались использовать -setPlaceholder: на вашем UITextField? Таким образом, вам не нужно будет помещать текст в текстовое поле, а затем вручную конвертировать его для обеспечения безопасности. например,

- (void)viewDidLoad {
    ...

    [textField setSecureTextEntry:YES];
    [textField setPlaceholder:@"4-digits"];

    ...
}

Это полностью позаботится о ваших последних двух вопросах. Что касается первого, однако, я не уверен, можете ли вы иметь цифровую клавиатуру для безопасного UITextField или нет. Казалось бы, это невозможно, если программная настройка не имеет никакого эффекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...