2011-01-18 2 views
1

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

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

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

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

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

ответ

0

Вы установили делегат?

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

textField.delegate=self; 

или еще,

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

@interface yourViewController : UIViewController <UITextFieldDelegate> 

EDIT:

Вы должны код в этом деле textFieldDidEndEditing это не textFieldShouldEndEditing

4

Не используйте -textFieldDidEndEditing. Это вызвано после того, как текстовое поле уходит в отставку с первого ответчика ... которого у него еще нет, потому что вы этого не сказали, потому что этот метод еще не был вызван, потому что первый ответчик не ушел в отставку, потому что вы не сказали это пока. Проблема круглая, курица-яйцо.

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

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

1

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

В интерфейсе Builder выберите TextField, а затем нажмите Ctrl + 2 (Connections) и подключить делегат outled с владельцем файла затем сохранить, и с этим надо работать.

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

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

} 

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

} 

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

2

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

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

  2. Когда его сделали, реализовать метод в файле правой ViewController (yourViewController.m):

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

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