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 контроллера вида.