我正在尝试使用自定义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,但似乎没有任何效果。
任何人都知道我该如何做到这一点?
答案 0 :(得分:0)
尝试制作另一个功能:
let config = {(textField: UITextField) in textFieldConfig((textField as? AKMaskField)!)}
alert.addTextFieldWithConfigurationHandler(config) //Line with error
答案 1 :(得分:0)
这不会编译,因为UIAlertController
正在实例化UITextField
。我找不到允许你用AKMaskField
这样的自定义类替换的公共接口 - 但是你可以在配置处理程序中设置委托并从那里自定义委托。