UiTextField и resignFirstResponder
У меня странная настройка.
У меня есть View
, называемый View1 и ViewController
вызов viewController1
in IB
, View1 - это дочерний элемент ViewController1.
Внутри View1 я создал код a UITextField
и добавил его как подвью.
В моем ViewController
у меня есть viewController1 : UIViewController <UITextFieldDelegate>
Теперь.. Я хотел бы отменить клавиатуру, когда текстовое поле в View1 получает кнопку "Готово" на клавиатуре, поэтому я
- (BOOL)textFieldShouldReturn:(UITextField *)TEXTFIELD {
[TEXTFIELD resignFirstResponder];
}
Теперь возникает вопрос: как мне установить связь между TEXTFIELD (определенным в моем диспетчере просмотра) и текстовым полем, определенным в моем представлении?
Нужно ли что-то делать в интерфейсеBuilder?
Возможно, я полностью здесь...
Некоторые советы были высоко оценены
Ответы
Ответ 1
Кендалл прав. Вам нужно установить viewController1 в качестве делегата вашего текстового поля.
В вашем комментарии выше, я думаю, вы неправильно понимаете метод textFieldShouldReturn. UITextField * передается как параметр этого метода, так что делегат может видеть, какое поле хочет вернуться, и решить, разрешать ли ему это. В вашем случае у вас есть только одно текстовое поле, поэтому просто отправьте первого ответчика и верните YES (мой код ниже).
Попробуйте поставить точку останова на эту функцию textFieldShouldReturn. Это вызов?
- (BOOL)textFieldShouldReturn:(UITextField*)aTextField
{
[aTextField resignFirstResponder];
return YES;
}
Ответ 2
Соедините свойство делегата текстового поля с вашим контроллером представления в IB (для этого представления должен быть File Owner). Также обратите внимание на заголовок контроллера представления, который соответствует протоколу.
Или вы можете просто установить свойство texfield.delegate для себя в методе viewDidLoad контроллера вида.