7

我有一个带有 UITextField 的 UIAlertView。我已连接 UIAlertView 委托,并alertViewShouldEnableFirstOtherButton:根据 UITextField 中的文本返回 YES 或 NO。

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

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

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


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

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


有没有一种干净的方法来进行警报视图调用alertViewShouldEnableFirstOtherButton:

4

1 回答 1

7

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

这将起作用:

[textField sendActionsForControlEvents:UIControlEventEditingChanged];
于 2013-04-22T12:22:38.930 回答