2010-07-06 3 views
3

У меня есть простой кусок кода, который работает на каждой системе, кроме iOS4. Речь идет об отставке первого ответчика для UITextField. Текстовое поле все проводные вверх, а вот код для делегата:UITextField покинуть первый ответчик iOS4

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

Я пробовал почти все возможные пути, стараясь не вернуть NO, а также и он не работает. Самое странное, что он работает на каждой iphone OS до 4.0 и на iPad (тестируется в симуляторах и на реальных устройствах) Может ли кто-нибудь помочь?

+0

Почему бы не использовать [textField resignFirstResponder] ;? Возможно, ваша переменная opis настроена неправильно. – Eiko

+0

Пробовал это также - не работает. – dusker

+0

То, что я тоже предлагаю попробовать с помощью [textField resignFirstResponder]; или проверьте, что текстовое поле правильно выделено и является тем же самым текстовым полем, которое пытается смириться. Happy Coding ... –

ответ

4

Это работало с моим 3GS в iOS4. Вы уверены, что правильно настроили делегата UITextField?

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

Я предполагаю, что вы имели в виду UITextFieldDelegate - да мой класс реализует это ... – dusker

+0

Нет, я действительно имел в виду, что вы установили свой класс, реализующий протокол UITextFieldDelegate, в качестве делегата для UiTextField. – Charter

+0

В вашем ответе вы указали TextVIEWDelegate. – dusker

1

Не уверен, если это похоже на ваш случай, но у меня есть UITextField в UIAlertView и была аналогичная проблема с клавиатурой не увольняя на resignFirstResponder.

Здесь было мое решение:

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

Кажется, что предупреждение стало firstResponder после textfield в отставку.

0

Это очень классическая проблема. Я предполагаю, что вы устанавливаете делегата на свой текстовый экран, но вопрос в том, где? Вы устанавливаете в инициализаторе initWithNib ... своего контроллера? Чем это неправильно. Потому что ваше текстовое поле не инициализируется к тому времени. Его инициализируйте метод viewDidLoad, поэтому вы должны установить там свой делегат, и он должен работать.

Смежные вопросы