2012-06-09 3 views
0

У меня есть несколько UITextFields (внутри UITableViewCells) на моем UIView с «Сохранить» UIButton. Я хочу сделать базовую проверку на UITextFields, когда пользователь нажимает кнопку «Сохранить».Захват текста из UITextField в переменной экземпляра, когда другой UIButton нажат на UIView

Я переопределил textFieldDidEndEditing, чтобы сохранить каждую из моих данных UITextField в переменной экземпляра; однако, если пользователь нажимает кнопку сохранения перед нажатием кнопки «Возврат» на панели UIKeyboard или нажатием на другой UITextField, данные в моем последнем UITextField никогда не сохраняются в моей переменной экземпляра, и проверка всегда терпит неудачу.

Я ищу способ запуска события типа «onBlur» (я знаю, что такое JS), чтобы сохранить мою строку в UITextField в моей переменной экземпляра.

Я просмотрел протокол UITextFieldDelegate, и я не вижу ничего подобного.

Есть ли способ, которым я могу отсутствовать?

ответ

1

, чтобы вызвать textFieldDidEndEditing на вашем UITextField, вам нужно будет позвонить

[_txt resignFirstResponder]; 

были _txt Ваш UITextField

Пожалуйста, обратите внимание, что если вы не имеете ссылку на _txt, и вы должны найти первый ответчик, чтобы подать в отставку Вы можете исправить это решение Get the current first responder without using a private API

Тогда вместо звонка

[_txt resignFirstResponder]; 

бы вы назвали

[self.view findAndResignFirstResponder]; 
+0

хорошо ... есть это ... UITextField находится в UITableViewCell ... Я действительно не знаю, как я получаю доступ к моему _txt внутри ячейки ... –

+0

nevermind ... Возможно, я могу установить _txt в качестве переменной экземпляра и проверить его там. .. позвольте мне посмотреть, что –

+0

@ ElGuapo хорошо, пожалуйста, проверьте обновленный ответ, в котором содержится решение, чтобы уйти в отставку ответчика, не имея ссылки на него :) –

1

Попробуйте // если мы столкнемся возвращение новой строки символов

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    // enter closes the keyboard 
    if ([string isEqualToString:@"\n"]) 
    { 
     [textField resignFirstResponder]; 
     return NO; 
    } 
    return YES; 
} 

, который будет вызывать

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField 
{ 
    [textField resignFirstResponder]; 
    // Call webservice 
    return YES; 
} 
+0

Пожалуйста, не используйте подписи/метки в своих сообщениях. Ваш ящик пользователя считается вашей подписью, и вы можете использовать свой профиль для публикации любой информации о себе, как вам нравится. [Часто задаваемые вопросы о подписках/тегах] (http://stackoverflow.com/faq#signatures) –

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

  • Нет связанных вопросов^_^