El método de delegado alertViewShouldEnableFirstOtherButton no se llama.

Quiero mostrar un post de alerta y estoy usando iOS SDK 8.1 con XCode 6.1. Sé que UIAlertView está en desuso; Sin embargo, mi aplicación tiene que admitir también iOS 7 y tengo que usar UIAlertView si la aplicación se ejecuta en un dispositivo iOS 7. Esta vista de alerta tiene un campo de text y dos botones donde uno de ellos es el button de cancelación pnetworkingeterminado. El otro button debe estar deshabilitado siempre que el campo de text esté vacío.

Aquí está mi código:

class MyViewController : UIViewController, UIAlertViewDelegate { var addRecipientAlertView:UIAlertView? // Irrelevant code here func performSomething(someValue:String) { addRecipientAlertView = UIAlertView(title: "Title", message: "Enter full name of user, email of user or a free-form text", delegate: self, cancelButtonTitle: "Cancel", otherButtonTitles: "Add Recipient") addRecipientAlertView!.alertViewStyle = UIAlertViewStyle.PlainTextInput addRecipientAlertView!.accessibilityValue = someValue // Text Field Settings let textField:UITextField = addRecipientAlertView!.textFieldAtIndex(0)! textField.placeholder = "Full Name, Email or Any Text" textField.keyboardType = UIKeyboardType.EmailAddress textField.clearButtonMode = UITextFieldViewMode.Always addRecipientAlertView!.show() } } func alertViewShouldEnableFirstOtherButton(alertView: UIAlertView) -> Bool { return false } 

El problema es; sea ​​lo que sea que haya intentado, el primer button no estaba deshabilitado de todos modos. Finalmente, dejé de intentar verificar el text de mi campo de text y he implementado el método de delegado alertViewShouldEnableFirstOtherButton de modo que siempre devuelve falso. Sin embargo, el resultado no ha cambiado y ambos botones (llamados "Cancelar" y "Agregar destinatario" en este ejemplo) todavía están habilitados. ¿Qué me estoy perdiendo?

Tuve el mismo problema y supongo que es un error en el SDK. La única solución de trabajo con la que me las arreglé fue implementar una class Objective-C que mostró la alerta y sirvió como su delegado.