2014-11-17 17 views
5

Desidero visualizzare un messaggio di avviso e sto utilizzando iOS SDK 8.1 con XCode 6.1. So che UIAlertView è deprecato; tuttavia, la mia app deve supportare anche iOS 7 e devo usare UIAlertView se l'app è in esecuzione su un dispositivo iOS 7. Questa vista di avviso ha un campo di testo e due pulsanti in cui uno di questi è il pulsante di annullamento predefinito. L'altro pulsante dovrebbe essere disabilitato finché il campo di testo è vuoto.alertViewShouldEnableFirstOther Il metodo del delegato del pulsante non viene chiamato

Ecco il mio codice:

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 
} 

Il problema è; qualunque cosa abbia provato, il primo altro pulsante non è stato disabilitato comunque. Alla fine ho rinunciato a cercare di controllare il testo del mio campo di testo e ho implementato il metodo di avviso alertShouldEnableFirstOtherButton in modo tale che restituisca sempre false. Tuttavia, il risultato non è cambiato e entrambi i pulsanti (denominati "Annulla" e "Aggiungi destinatario" in questo esempio) sono ancora abilitati. Cosa mi manca?

risposta

1

Ho avuto lo stesso problema e credo sia un bug nell'SDK. L'unica soluzione funzionante con cui sono riuscito a realizzare è stata l'implementazione di una classe Objective-C che mostrava l'avviso e fungeva da suo delegato.

Problemi correlati