Ответ 1
У меня была такая же проблема, и это было потому, что я забыл установить делегат для текстового поля в конструкторе интерфейса для владельца файлов.
Мы пытаемся выяснить, как скрыть клавиатуру, но у нас возникают проблемы с 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
работает.
Как заставить работать клавиатуру?
У меня была такая же проблема, и это было потому, что я забыл установить делегат для текстового поля в конструкторе интерфейса для владельца файлов.
У меня была такая же проблема, и, как предложил Уоррен Кроутер, мне удалось решить эту проблему, удерживая CTRL и перетаскивая ее из TextBox на ярлык "Файл владельца".
(Боже, я иногда пропускаю Visual Studio...!!)
(Извиняется за повторение сказанного, но я подумал, что скриншот может быть полезен!)
У меня был набор делегатов и все такое. Но я использовал UITextView вместо UITextfield...
Возможно, это поможет кому-то понять, почему методы делегата не запускаются.
Я вижу, что вы поместили его в свой код, но для будущих посетителей добавьте его в свой код:
yourTextField.delegate = self;
Я думаю, вы используете xib. Если это так, вам также необходимо установить делегат. Щелкните правой кнопкой мыши на вашем UITextfiled в xib, и у вас будет опция делегирования, перетащите его владельцу файла.
Ниже приведен ответ от Майка Гледхилла и Уоррена Кроутера, обновленного с помощью скриншота xcode 5.
(чтобы установить делегат UITextField, нажмите и удерживайте Ctrl + перетащить с UITextField на желтую кнопку "Владелец файла", если показано, что делегат UITextField не установлен, метод textFieldShouldReturn никогда не вызван).
У меня было все правильно подключено, и - (BOOL)textFieldShouldReturn:(UITextField *)textField
все еще не вызывался!
Как работа вокруг, я настроил метод для запуска "EditingDidEnd":
убедитесь, что ваш MultiSalesViewController
реализует протокол UITextFieldDelegate
:
@interface MultiSalesViewController : UIViewController <UITextFieldDelegate>
попробуйте добавить [self becomeFirstResponder];
после [textField resignFirstResponder];
изменить:
просто другая мысль.. у вашего UITextField
есть значение, установленное для returnKeyType
?
txtCardNumber.returnKeyType = UIReturnKeyDone;
Я не уверен, что это нужно для работы функции
Перейдите в Connection Inspector и подключите делегат для просмотра контроллера. Это его.
Контрольный список, чтобы заставить его работать:
Установил ли ваш контроллер как делегировать экземпляр UITextField?
Убедитесь, что контроллер не освобождается путем назначения свойства (Autorelease) или явного сохранения его.