如何在进行更改后使UIAlertView调用`alertViewShouldEnableFirstOtherButton:`

时间:2013-04-22 12:16:09

标签: ios cocoa-touch uialertview

我有一个带UITextField的UIAlertView。我连接了UIAlertView委托,我在alertViewShouldEnableFirstOtherButton:中返回YES或NO,具体取决于UITextField中的文本。

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

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

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


从堆栈跟踪中我发现委托方法是从私有UIAlertView方法_alertSheetTextFieldDidChange:调用的。

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


是否有一种干净的方式来调用警报视图{?1}}?

1 个答案:

答案 0 :(得分:8)

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

这将有效:

[textField sendActionsForControlEvents:UIControlEventEditingChanged];