2013-07-19 2 views
3

У меня есть UIAlertView, содержащий UITextField:Как установить inputDelegate для UITextField?

UITextField *textField = [alertView textFieldAtIndex:0]; 

Теперь я хочу, чтобы установить свойство inputDelegate для TextField:

[textField setInputDelegate:self]; 

Мой контроллер вид (само) соответствует UITextInputDelegate и она имеет метод

- (void)textDidChange:(id<UITextInput>)textInput; 

но по какой-либо причине этот метод никогда не вызывается, когда я изменяю текст в текстовом поле. Поэтому я предполагаю, что мой контроллер представления не установлен как inputDelegate текстового поля.

В документации говорится:

система ввода текста автоматически назначает делегата этого свойства во время выполнения. Ответственность за принятие протокола UITextInput несет ответственность за уведомление входного делегата на соответствующих этапах.

Означает ли это, что я не могу изменить inputDelegate текстового поля?

Как добиться того, чтобы textField действительно вызывал метод делегата textDidChange: в моем контроллере просмотра всякий раз, когда его содержимое менялось?

+0

когда-либо находил решение на этом? –

+0

Не то, чтобы я помню. Я думаю, что в итоге я создал собственный собственный класс представления предупреждений. – Mischa

ответ

1

У меня такой же опыт, что inputdelegate никогда не будет работать.

Я нашел эту страницу для вас,

input delegate

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

UITextField *textField = [alertView textFieldAtIndex:0]; 

textField.delegate = self; 
+0

Что вы предлагаете, это создать новый UITextField и установить его делегат для себя. Это не устранит проблему, потому что (1) я хочу использовать UITextField, предоставляемый классом UIAlertView, и (2) мне удалось установить делегат текстового поля, используя '[textField setDelegate: self]', но я не могу установить его inputDelegate. '[textField setInputDelegate: self]' не работает. – Mischa

+0

Хм, почему ты хочешь использовать inputdelegate? получать уведомление при изменении текста? – kvh

+0

Да. Я знаю, что есть метод делегирования текстового поля 'textField: shouldChangeCharactersInRange: replacementString:', но этот метод называется _before_ фактическим изменением текста текстового поля. Мне нужно выполнить тест _after_, текст был изменен. – Mischa