resignFirstResponder ИЛИ - (IBAction) doneButtonOnKeyboardPressed: (id) отправитель - PullRequest
1 голос
/ 01 апреля 2010

Мне было просто интересно, какой подход лучше скрыть в приложении iphone для клавиатуры

1> Инвентарь

- (IBAction) doneButtonOnKeyboardPressed: (id)sender
{

}

Метод завершения события Textfield при выходе из программы

ИЛИ

В Textfield реализовать это

-(BOOL)textFieldShouldReturn:(UITextField *)theTextField {
[txtName resignFirstResponder];
return YES;
}

Какой вариант лучше выбрать, в какой ситуации ...? Любой из вариантов имеет преимущество перед другими ...

Ответы [ 3 ]

1 голос
/ 04 апреля 2010

Я настоятельно предпочитаю использовать шаблон цели / действия, отвечая на событие UIControlEventDidEndOnExit, обычно, подключая его в Интерфейсном Разработчике, подключая событие «Did End On Exit», показанное в IB, к Владельцу файла, используя метод по моему выбору. Это будет первый вариант, который вы показали.

Вот почему я предпочитаю этот механизм:

Это много приложений (ну, по крайней мере, мои приложения), необходимо различать отмену ввода, скажем, касанием за пределами текстового поля, и завершение ввода кнопкой Готово на клавиатуре (документы, как правило, называют это кнопкой «возврат»). Поскольку метод делегата -textFieldDidEndEditing вызывается в любое время, когда -resignFirstResponder вызывается, когда поле является первым респондентом (независимо от причины завершения редактирования), необходимо иметь переменную где-нибудь, чтобы отслеживать путь о том, как вы заканчиваете редактирование. Это вводит уровень сложности, который просто не нужен.

В моем приложении я отвечаю на сенсорные события за пределами UITextField, вызывая -resignFirstResponder, чтобы отменить редактирование, не предпринимая дальнейших действий. Если я использую методы делегата, мне нужно будет установить здесь состояние, чтобы записать, что я беру «отмену» пути через мой код, и использовать метод делегата -textFieldShouldReturn для обоих состояний установки, чтобы указать, что я прохожу через 'Done' путь моего кода, и вызвать -resignFirstResponder. Грязное.

Использование здесь шаблона «цель / действие» приводит к более простому и понятному коду.

0 голосов
/ 01 апреля 2010
-(BOOL)textFieldShouldReturn:(UITextField *)theTextField {
  [txtName resignFirstResponder];
  return YES;
}

Вышеуказанный метод является лучшим - вам просто нужно выбрать любой из текстовых полей и в инспекторе соединений - подключить владельца вашего файла к делегату textFields. Это сработает.

0 голосов
/ 01 апреля 2010

Функциональность такая же, одна из них обрабатывает текстовое поле управления, а другая относится к делегату клавиатуры почему ты хочешь работать с клавиатурой? я предлагаю справиться с ним из-за контроля над тобой .....

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