2013-04-22 58 views
7

我有一个带UITextField的UIAlertView。我连接了UIAlertView代理,根据UITextField中的文本,我在alertViewShouldEnableFirstOtherButton:中返回YES或NO。如何在进行更改后调用UIAlertView调用`alertViewShouldEnableFirstOtherButton:`?

我需要以编程方式更改textField的文本。这按预期工作。

不幸的是,我不知道如何使UIAlertView调用alertViewShouldEnableFirstOtherButton:委托方法,以便在更改textField的文本后启用或禁用其他按钮。

我以为UIAlertView注册为UITextField的目标,所以我尝试从textField发送UIControlEventValueChanged。没有工作。


从堆栈跟踪我想通了委托方法是从私人UIAlertView中方法_alertSheetTextFieldDidChange:调用。

因此,如果我在更改文本后执行[self.currentAlert performSelector:@selector(_alertSheetTextFieldDidChange:) withObject:textField];,则会调用委托方法,并且该按钮的启用状态会更改。但是,由于这是一种私人方法,因此该应用可能会被拒绝。我不想冒这个风险。


是否有一个干净的方法来使警报视图调用alertViewShouldEnableFirstOtherButton:

回答

8

我在发送控制事件的正确轨道上。我只是选择了错误的事件。

这将工作:

[textField sendActionsForControlEvents:UIControlEventEditingChanged]; 
+0

我只是碰到了这个问题为好,这个答案的作品,似乎是这样做的正确方法 – Alex 2015-08-10 15:05:04