textFieldShouldReturn не вызывается в iOS - PullRequest
33 голосов
/ 07 января 2011

Мы пытаемся выяснить, как скрыть клавиатуру, но у нас возникают проблемы с срабатыванием textFieldShouldReturn. Зачем?

Вот что было сделано:

*. Ч

@interface MultiSalesViewController : UIViewController <UITextFieldDelegate>

*. С

txtCardNumber.delegate = self;

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

Кроме того, textField имеет свой делегат, установленный на Владелец файлов в Интерфейсном Разработчике. Одна странность в том, что - (void)textFieldDidEndEditing:(UITextField *)textField viewController работает.

Как заставить работать клавиатуру?

Ответы [ 10 ]

79 голосов
/ 16 февраля 2011

У меня была точно такая же проблема, и это потому, что я забыл установить делегат для текстового поля в конструкторе интерфейсов как «владелец файлов».

28 голосов
/ 11 июля 2012

У меня была та же проблема, и, как предположил Уоррен Кроутер, мне удалось ее решить, удерживая клавишу CTRL и перетаскивая ее из TextBox на ярлык «Владелец файла».

(Черт, я скучаю по Visual Studioиногда ... !!)

enter image description here

(извиняюсь за повторение того, что уже было сказано, но я подумал, что скриншот может быть полезен!)

11 голосов
/ 10 января 2013

У меня был установлен делегат и все. Но я использовал UITextView вместо UITextfield ...

Возможно, это поможет кому-то понять, почему методы делегата не запускаются.

8 голосов
/ 18 июля 2012

Я вижу, вы добавили его в свой код, но для будущих посетителей добавьте его в свой код:

yourTextField.delegate = self;

6 голосов
/ 03 декабря 2011

Я думаю, что вы используете XIB. Если это так, вам также нужно установить делегат там. Сделайте правый клик на вашем UITextfiled в xib, и у вас будет возможность делегирования, перетащите его к вашему владельцу файла.

3 голосов
/ 12 апреля 2014

следующий ответ от Майка Гледхилла и Уоррена Кроутера, обновленный скриншотом xcode 5.

(чтобы установить делегат UITextField, нажмите и удерживайте Ctrl + перетаскивание из UITextField на желтую кнопку «Владелец файла», как показано на рисунке ниже. Если делегат UITextField не установлен, метод textFieldShouldReturn никогда не вызывается).

enter image description here

2 голосов
/ 24 сентября 2015

У меня все было в порядке, а - (BOOL)textFieldShouldReturn:(UITextField *)textField все еще не вызывали!

В качестве обходного пути я настроил метод для запуска EditingDidEnd:

enter image description here

1 голос
/ 26 января 2015

Перейдите в Инспектор подключений и подключите делегат для просмотра контроллера. Вот так.

1 голос
/ 07 января 2011

убедитесь, что ваш MultiSalesViewController реализует протокол UITextFieldDelegate:

@interface MultiSalesViewController : UIViewController <UITextFieldDelegate>

попробуйте добавить [self becomeFirstResponder]; после [textField resignFirstResponder];


редактирование: просто еще одна мысль .. ваш UITextField имеет значение, установленное для returnKeyType?

txtCardNumber.returnKeyType = UIReturnKeyDone;

Я не уверен, должно ли это быть установлено для работы функции

0 голосов
/ 08 августа 2016

Контрольный список, чтобы заставить его работать:

  • Вы установили свой контроллер как делегат для экземпляра UITextField?

  • Убедитесь, что контроллер не был освобожден путем присвоения свойству (Autorelease) или явного его сохранения.

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