Подтвердить что ты не робот

textFieldShouldReturn не вызывается в iOS

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

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

*.час

@interface MultiSalesViewController : UIViewController <UITextFieldDelegate>

*.c

txtCardNumber.delegate = self;

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

enter image description here

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

Ответ 3

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

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

Ответ 4

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

yourTextField.delegate = self;

Ответ 5

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

Ответ 6

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

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

enter image description here

Ответ 7

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

Как работа вокруг, я настроил метод для запуска "EditingDidEnd":

введите описание изображения здесь

Ответ 8

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

@interface MultiSalesViewController : UIViewController <UITextFieldDelegate>

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


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

txtCardNumber.returnKeyType = UIReturnKeyDone;

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

Ответ 9

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

Ответ 10

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

  • Установил ли ваш контроллер как делегировать экземпляр UITextField?

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