2014-09-19 4 views
1

Я только что нашел ошибку в приложении, над которым я работаю, что, похоже, специфично для iOS 8, но я не могу понять причину или решение, поэтому любой совет будет очень признателен ,Switching keyboardType очищает текст TextField

Проблема: у меня есть вид, где пользователь вводит пароль. Когда текстовое поле активно, изначально мы показываем цифровую панель с кнопкой над клавиатурой, чтобы переключиться на клавиатуру алфавита. Вот код для нажатия кнопки для этой кнопки для переключения между клавиатурой qwerty и цифровой клавиатурой.

`UIButton * toggleButton = отправитель;

if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0f) 
{ 
    [self.passcodeField resignFirstResponder]; 
} 

if (self.passcodeField.keyboardType == UIKeyboardTypeNumberPad) { 
    self.passcodeField.keyboardType = UIKeyboardTypeNamePhonePad; 
    [toggleButton setTitle: @"123" forState:UIControlStateNormal]; 
} 
else { 
    self.passcodeField.keyboardType = UIKeyboardTypeNumberPad; 
    [toggleButton setTitle: @"ABC" forState:UIControlStateNormal]; 
} 

if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0f) 
{ 
    [self.passcodeField becomeFirstResponder]; 
} 

[self.passcodeField reloadInputViews];` 

Проблема заключается в том, если я типа «123» в цифровую клавиатуру, переключатель к QWERTY-клавиатуре, как только я набираю один символ, он очищает первоначальный вход и заменяет его с новыми персонажами, а не добавив его. Я не уверен, почему, поскольку в моем контроллере просмотра нет кода, который очистит текст в passcodeField. Кто-нибудь знает, что может быть причиной этого?

Заранее спасибо ...

ответ

0

Является ли ваше текстовое поле безопасным? Если да, я думаю, что ваша проблема связана с вызовом resignFirstResponder и becomeFirstResponder. Это естественное поведение защищенного текстового поля, когда оно активирует его, стирает все введенные ранее тексты.

+0

«Это не ошибка, это особенность!» :) – Vinzzz

+0

Это не очень приятная функция. Это безопасное текстовое поле, поэтому это, вероятно, проблема. Какие-нибудь идеи об этой работе? Если я не сделаю вызовы уйти в отставку и стать первымResponder, в iOS8 клавиатура не изменится, поэтому она должна быть там. – SeanT

+0

Я полностью понимаю вас, у нас была такая же проблема, просто с переключением с небезопасного на безопасный режим программно. По мере того, как я искал ее, нет «чистого» решения, но вы всегда можете запомнить текст перед отставкой и назначить его впоследствии. – hybridcattt