2013-04-22 4 views
7

Ho un UIAlertView con un UITextField. Ho collegato il delegato UIAlertView e restituisco SÌ o NO in alertViewShouldEnableFirstOtherButton: a seconda del testo nel campo UITextField.Come rendere UIAlertView chiamata `alertViewShouldEnableFirstOtherButton:` dopo aver apportato le modifiche?

Ho bisogno di cambiare il testo del campo di testo a livello di codice. Funziona come previsto.

Purtroppo non so come rendere UIAlertView chiama il metodo delegato alertViewShouldEnableFirstOtherButton: in modo da abilitare o disabilitare l'altro pulsante dopo aver modificato il testo del campo di testo.

Ho pensato che UIAlertView registri come destinazione di UITextField, quindi ho provato a inviare un UIControlEventValueChanged dal campo di testo. Non ha funzionato


Dalla traccia dello stack ho capito il metodo delegato viene chiamato dal metodo UIAlertView privato _alertSheetTextFieldDidChange:.

Quindi, se faccio [self.currentAlert performSelector:@selector(_alertSheetTextFieldDidChange:) withObject:textField]; dopo aver modificato il testo, viene chiamato il metodo delegato e lo stato di attivazione del pulsante cambia. Ma poiché questo è un metodo privato, l'app verrà probabilmente respinta. Non voglio rischiare.


C'è un modo pulito per rendere la vista di avviso chiamata alertViewShouldEnableFirstOtherButton:?

risposta

8

Ero sulla strada giusta con l'invio di un evento di controllo. Ho appena scelto l'evento sbagliato.

Ciò funzionerà:

[textField sendActionsForControlEvents:UIControlEventEditingChanged]; 
+0

Ho appena incontrato questo problema pure, e questa risposta opere e sembra essere il modo corretto di farlo – Alex