通常,要在每次更改时抓取UITextField的文本,只需从Storyboard文件中拖出一个IBOutlet,然后选择"编辑已更改"选项。
但是,我想在UIAlertController中获取UITextField的文本,因此文本字段是以编程方式创建的,而不是通过故事板创建的。
如何以编程方式创建每次文本字段(在“警报”窗口中)更改时运行的函数?
我需要什么:
func textHasChanged(textField: TextField) {
print(textField.text)
}
如果输入是" cat" 需要的输出需要是:
" C"
" CA"
"猫"
我将如何实现这一目标?
注意:我尝试过.addtarget方法:
textField.addTarget(self, action: Selector(self.textFieldDidChange(_:)), for: UIControlEvents.editingChanged)
将此函数放在同一个文件中:
func textFieldDidChange(txtField: UITextField)
但我一直收到这个错误: 类型的值"我的viewcontroller的名称"没有会员" textFieldDidChange"
我已经查到了这个问题,但大多数都给了我过时的答案。谢谢!
答案 0 :(得分:1)
试试这个:
@IBAction func displayAlert(_ sender : AnyObject) {
let alertController = UIAlertController(title: "Enter some text", message: "Please enter some text in the field below", preferredStyle: .alert)
alertController.addTextField()
alertController.addAction(UIAlertAction(title: "OK", style: .default) { action in
print("User pressed OK")
})
alertController.addAction(UIAlertAction(title: "Cancel", style: .cancel) { action in
print("User pressed Cancel")
})
if let textField = alertController.textFields?.first {
textField.addTarget(self, action: #selector(ViewController.textHasChanged), for: .editingChanged)
}
self.present(alertController, animated: true)
}