如何在按下操作按钮时禁用UIAlertController自动关闭

时间:2015-04-02 20:12:07

标签: ios swift uialertcontroller

我有一个UIAlertController,我正在检查用户输入。当用户未键入文本字段时,我添加的“确定操作”按钮应该向用户发出警告,而不是关闭警报视图。

我处理警告但警报视图自动关闭。 如何禁用自动关闭?

感谢。

我的代码:

    var alert = UIAlertController(title: "change name and phone number", message: nil, preferredStyle: UIAlertControllerStyle.Alert)
    alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default,
        handler: {  action in
            //Add a comment to this line

            let nameField: UITextField = alert.textFields![0] as UITextField
            let phoneField: UITextField = alert.textFields![1] as UITextField
            let name = nameField.text
            let phone = phoneField.text
            if name.length == 0 {
                JLToast.makeText("Please enter name").show()
            } else if phone.length == 0 {
                 JLToast.makeText("Please enter phone number").show()
            } else {
                self.sendSupportInfo(nameField.text, phone: phoneField.text)
            }
            println("name:: \(nameField.text), phone: \(phoneField.text)")
    }))
    alert.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Default, handler: nil))

    alert.addTextFieldWithConfigurationHandler { (textField) -> Void in
        textField.placeholder = "name"
    }
    alert.addTextFieldWithConfigurationHandler { (textField) -> Void in
        textField.placeholder = "0544-444444"
        textField.keyboardType = UIKeyboardType.PhonePad
    }
    self.presentViewController(alert, animated: true, completion: nil)

2 个答案:

答案 0 :(得分:0)

你做不到。 其他选项是,您只能禁用UIAlertAction。 相反,您可能想要创建自己的自定义对话框。

正如官方文件所说:

  

子类   UIAlertController类旨在按原样使用,不支持子类化。此类的视图层次结构是私有的,不得修改。

答案 1 :(得分:0)

您可以创建新的UI窗口并使窗口级别高于警报级别,然后将警报显示在新的UI窗口上。