alertViewShouldEnableFirstOtherButton委托方法未被调用

时间:2014-11-17 07:58:48

标签: ios iphone swift uialertview

我想显示警告消息,我正在使用带有XCode 6.1的iOS SDK 8.1。我知道UIAlertView已被弃用;但是,我的应用程序还必须支持iOS 7,如果应用程序在iOS 7设备上运行,我必须使用UIAlertView。此警报视图有一个文本字段和两个按钮,其中一个是默认取消按钮。只要文本字段为空,就应禁用其他按钮。

这是我的代码:

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
}

问题是;无论我尝试过什么,第一个其他按钮都没有被禁用。最后,我放弃了尝试检查文本字段的文本,并实现了alertViewShouldEnableFirstOtherButton委托方法,使其始终返回false。但是,结果没有改变,并且仍然启用了两个按钮(名为"取消"和"添加收件人"在此示例中)。我错过了什么?

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,我猜这是SDK中的一个错误。我设法提出的唯一可行的解​​决方案是实现一个Objective-C类,它显示警报并作为其委托。