2013-04-22 3 views
7

У меня есть UIAlertView с UITextField. Я подключил делегат UIAlertView, и я возвращаю YES или NO в alertViewShouldEnableFirstOtherButton: в зависимости от текста в UITextField.Как сделать UIAlertView вызовом `alertViewShouldEnableFirstOtherButton:` после внесения изменений?

Мне нужно изменить текст текстового поля программно. Это работает так, как ожидалось.

К сожалению, я не знаю, как заставить UIAlertView вызывать метод делегата alertViewShouldEnableFirstOtherButton:, чтобы он включал или отключал другую кнопку после того, как я изменил текст textField.

Я думал, что UIAlertView регистрируется как цель UITextField, поэтому я попытался отправить UIControlEventValueChanged с текстового поля. Не работает.


Из трассировки стека я понял, метод делегата вызывается из частного метода UIAlertView _alertSheetTextFieldDidChange:.

Так что, если я изменил текст [self.currentAlert performSelector:@selector(_alertSheetTextFieldDidChange:) withObject:textField];, вызывается метод делегата и изменяется состояние включения кнопки. Но, поскольку это частный метод, приложение, вероятно, будет отклонено. Я не хочу рисковать этим.


Есть ли чистый способ сделать звонок для просмотра предупреждения alertViewShouldEnableFirstOtherButton:?

ответ

8

Я был на правильном пути с отправкой контрольного события. Я просто выбираю неправильное событие.

Это будет работать:

[textField sendActionsForControlEvents:UIControlEventEditingChanged]; 
+0

Я просто столкнулся с этой проблемой, а также, и это ответ работает, и, кажется, правильный способ сделать это – Alex

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