it-swarm.com.ru

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

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

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

*.час

@interface MultiSalesViewController : UIViewController <UITextFieldDelegate>

* .c

txtCardNumber.delegate = self;

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

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

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

33
iPhone Developer

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

79
Warren Crowther

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

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

enter image description here

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

28
Mike Gledhill

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

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

11
momo

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

yourTextField.delegate = self;

8
sridvijay

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

6
MANiK

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

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

enter image description here

3
tmr

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

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

 enter image description here

2
kraftydevil

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

1
Biren

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

@interface MultiSalesViewController : UIViewController <UITextFieldDelegate>

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


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

txtCardNumber.returnKeyType = UIReturnKeyDone;

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

1
binnyb

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

  • Вы установили свой контроллер как делегат в UITextField Instance?

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

0
San