2013-11-12 8 views
1

Мне нужен безопасный UITextField, но по умолчанию он показывает последний символ в течение примерно 1 секунды, прежде чем он обратится к *. Есть ли способ отключить это и видеть * вместо символа, как только вы вводите его?Изменение поведения безопасного UITextField

ответ

1

Я решил его, используя обходной путь, не смог найти простое решение, как установка флага:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    if (textField == self.mySecureTextField) { 
     NSString *currentText = textField.text; 
     NSString *newText = [currentText stringByReplacingCharactersInRange:range withString:string]; 
     textField.text = newText; 
     return NO; 
    } 
    return YES; 
} 
1

Да, вы можете это выполнить. Для этого вам нужно добавить пробел в поле «Текст», чтобы начать редактирование. И когда редактирование конечного пользователя удаляет это пустое пространство.

Для получения более подробной информации см. Ниже фрагмент кода.

- (void)textFieldDidBeginEditing:(UITextField *)textField { 
    textField.text = @" "; 
    UITextPosition *beginning = [textField beginningOfDocument]; 
    [textField setSelectedTextRange:[textField textRangeFromPosition:beginning toPosition:beginning]]; 
} 

- (void)textFieldDidEndEditing:(UITextField *)textField { 
    if ([textField.text length] > 0) 
     textField.text = [textField.text substringToIndex:[textField.text length] - 1];; 
} 

Дайте мне знать, если у вас есть запрос по этому вопросу.

Спасибо.

+0

К сожалению, это не работает, но я имел в виду решение, установив только флаг – Levi

+0

BTW Nice трюк. –

+0

Для меня это решение - заменить символы вручную в 'shouldChangeCharactersInRange' и вернуть' NO'. – Levi

Смежные вопросы