2014-11-17 24 views
5

Chcę wyświetlić komunikat alertu i używam iOS SDK 8.1 z XCode 6.1. Wiem, że UIAlertView jest przestarzałe; jednak moja aplikacja musi obsługiwać również iOS 7 i muszę korzystać z UIAlertView, jeśli aplikacja działa na urządzeniu iOS 7. Ten widok alertu zawiera pole tekstowe i dwa przyciski, w których jednym z nich jest domyślny przycisk anulowania. Drugi przycisk powinien być wyłączony, o ile pole tekstowe jest puste.alertViewShouldEnableFirstOtherButton metoda delegata nie jest wywoływana

Oto mój kod:

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 
} 

Problemem jest; cokolwiek próbowałem, pierwszy inny przycisk i tak nie został wyłączony. W końcu zrezygnowałem z próby sprawdzenia tekstu w moim polu tekstowym i zaimplementowałem metodę delegowania alertViewShouldEnableFirstOtherButton tak, aby zawsze zwracała wartość false. Jednak wynik nie zmienił się i oba przyciski (o nazwie "Anuluj" i "Dodaj odbiorcę" w tym przykładzie) są nadal włączone. czego mi brakuje?

Odpowiedz

1

Miałem ten sam problem i myślę, że to błąd w SDK. Jedynym rozwiązaniem, które udało mi się wymyślić, było zaimplementowanie klasy Objective-C, która wyświetlała alert i służyła za jego delegata.

Powiązane problemy