2013-04-22 47 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