带自定义UITextField的UIAlertController

时间:2015-09-04 19:34:01

标签: ios swift uialertcontroller

我正在尝试使用自定义UITextField,更准确地说是AKMaskField(here is AKMaskField project on GitHub

但我没有运气,这是我的代码,一个简单的UIAlertController:

 @IBAction func buttonClick(sender: AnyObject) {

    var alert = UIAlertController(title: "Vincular CPF", message: "Digite seu CPF para acumular mais pontos no seu programa de fidelidade (Somente números)", preferredStyle: UIAlertControllerStyle.Alert)

    alert.addTextFieldWithConfigurationHandler(textFieldConfig) //Line with error
    alert.addAction(UIAlertAction(title: "Cancelar", style: UIAlertActionStyle.Cancel, handler: handleCancelButton))
    alert.addAction(UIAlertAction(title: "Enviar", style: UIAlertActionStyle.Default, handler: {
            (UIAlertAction) in
            println("ok")
        }))



    self.presentViewController(alert, animated: true, completion: {


    })

}

func textFieldConfig(textField: AKMaskField){
    textField.mask = "{ddd}.{ddd}.{ddd}-{dd}"
    textField.maskTemplate = "x"
    textField.maskShowTemplate = true

    //textField.keyboardType = .NumberPad
    //textField.placeholder = "00000000000"
}

以下是错误消息:

 Cannot invoke 'addTextFieldWithConfigurationHandler' with an argument list of type '((AKMaskField) -> ())'

错误非常清楚,我尝试了一切来迫使向下转换到UITextField,但似乎没有任何效果。

任何人都知道我该如何做到这一点?

2 个答案:

答案 0 :(得分:0)

尝试制作另一个功能:

let config = {(textField: UITextField) in textFieldConfig((textField as? AKMaskField)!)}
alert.addTextFieldWithConfigurationHandler(config) //Line with error

答案 1 :(得分:0)

这不会编译,因为UIAlertController正在实例化UITextField。我找不到允许你用AKMaskField这样的自定义类替换的公共接口 - 但是你可以在配置处理程序中设置委托并从那里自定义委托。