Невозможно отклонить клавиатуру с UITextField - PullRequest
1 голос
/ 18 января 2011

Я не могу получить textFieldShouldEndEditing для вызова. Я заново создал ссылки в конструкторе интерфейсов и попробовал, но ничего не работает. Любая идея, почему это не будет называться?

Редактировать

Я реализую -textFieldShouldEndEditing и -textFieldDidFinishEditing Добавление делегата для textField тоже не помогло. Код, который я использую ниже, не вызывает сообщения журнала.

-(BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
    NSLog(@"Done editing...");
    [textField resignFirstResponder];
    return YES;
}

-(void)textFieldDidEndEditing:(UITextField *)textField
{
    NSLog(@"Done editing...");
}

Ответы [ 4 ]

4 голосов
/ 18 января 2011

Не используйте -textFieldDidEndEditing.Он вызывается после того, как текстовое поле подает в отставку первому респонденту ... чего еще нет, потому что вы не сказали об этом, потому что этот метод еще не был вызван, потому что первый респондент не был подан в отставку, потому что вы не сказалиэто пока.Круговая проблема типа «курица и яйцо».

Требуемый метод делегата - -textFieldShouldReturn.Это вызывается при нажатии клавиши «возврат».Внутри этого скажите текстовому полю, чтобы он подал в отставку первому респонденту, затем верните YES.

Также поместите большую прозрачную настраиваемую кнопку позади формы и подключите ее к внутренней стороне к методу, который проходит через всетекстовые поля в форме и отставки первого респондента на каждом из них.Так что фоновое прикосновение тоже отпускает клавиатуру.

2 голосов
/ 26 июля 2012

Я видел, что это было очень давно, и я надеюсь, что с тех пор вы можете решить эту проблему. Все говорят вам правильные вещи, но вы должны заботиться обо всем одновременно! Позвольте мне пройтись по всем из них:

  1. Сначала сделай обещание:
@interface yourViewController : UIViewController <UITextFieldDelegate>
  1. Затем убедитесь, что вы также подключили делегатов своих текстовых полей на раскадровке к фактическому контроллеру представления (yourViewController)!

  2. Когда это будет сделано, реализуйте метод в правом файле viewcontroller (yourViewController.m):

 - (BOOL)textFieldShouldReturn:(UITextField *)textField {
       [textField resignFirstResponder];
       return YES;
 }
  1. Проверьте это, и теперь оно должно работать ...

Надеюсь, это поможет!

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

установите делегата на ваш TextField

В интерфейсе Builder выберите ваш TextField, затем нажмите команду + 2 (Соединения) и соедините делегата, выделенного с владельцем файла, затем сохраните, и с этим должно работать.

метод делегата:

-(void)textFieldDidBeginEditing:(UITextField *)textField {

 }

-(void)textFieldDidEndEditing:(UITextField *)textField {

 }

Надеюсь, это поможет вам.

0 голосов
/ 18 января 2011

Вы задали делегата?

Если нет, установите с помощью

textField.delegate=self;

или еще,

Вы должны включить UITextFieldDelegate в файл .h

@interface yourViewController : UIViewController <UITextFieldDelegate>

РЕДАКТИРОВАТЬ:

Вы должны кодировать в этом делегате textFieldDidEndEditing не это textFieldShouldEndEditing

...