Как я могу заставить неизвестного UITextField подать в отставку первым респондентом? - PullRequest
3 голосов
/ 04 мая 2011

На мой взгляд есть два UITextFields и UISwitch. Если пользователь редактирует textField, а затем сразу же касается переключателя (не нажимая клавишу возврата), текст остается без изменений, если он введен без AutoCorrect.

Если я знаю, какие textField они печатали, я могу принудительно завершить автозамену, вызвав [textField resignFirstResponder]. Но пользователь может набирать либо textField, поэтому я не знаю, какой из них вызывать.

Как я могу обойти это? Есть ли способ определить, какой textField использовался? Или что-то более простое, о чем я не думал?

Ответы [ 4 ]

9 голосов
/ 04 мая 2011

Один прекрасный способ сделать это без необходимости отслеживать, какое поле активно:

// This causes the current responder (eg. an input field) to resignFirstResponder and
[self.endEditing:YES];
6 голосов
/ 08 июля 2014

Заменить [self.view endEditing:YES] на следующий ...

[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];
2 голосов
/ 04 мая 2011

Методы uitextfielddelegate вызываются для текстового поля, в котором выполняется редактирование. Таким образом, вам не нужно сталкиваться с проблемой определения того, какое текстовое поле редактируется.

Реализуйте методы uitextfielddelegate и назначьте делегат текстового поля классу, в котором вы реализуете методы, и обрабатываете ответы в них.

Методы, которые вас интересуют:

textFieldDidEndEditing:

Сообщает делегату, что редактирование остановлено для указанного текстового поля.

- (void)textFieldDidEndEditing:(UITextField *)textField

Параметры

textField
Текстовое поле, для которого закончено редактирование.

Обсуждение

Этот метод вызывается после того, как текстовое поле отказывается от статуса первого респондента. Вы можете использовать этот метод для обновления информации о состоянии вашего делегата. Например, вы можете использовать этот метод, чтобы скрыть наложения, которые должны быть видны только при редактировании. Реализация этого метода делегатом является необязательной.

Наличие

Доступно в iOS 2.0 и более поздних версиях.

Заявлено в

UITextField.h

0 голосов
/ 04 мая 2011

Вы можете отслеживать, какой из них является текущим, используя делегат textFieldDidBeginEditing.

...