如果为空,请始终在 UITextField 中设置“0”,即使在输入内容和 redoing/delete 之后也是如此
Always set "0" in UITextField if empty, even after typing something and redoing/delete
我在 ViewController 中有 5 个文本字段,我想在删除写入的数字后自动将其设置为数字“0”。
在从情节提要中输入数字之前默认设置为“0”(这是正确的)。但在删除书写数字后,文本字段为空。我希望它再次为空时自动设置为“0”。不仅是占位符,还有实际数字。
Before entering numbers
When entering numbers
After entering numbers
让view controller成为text field的delegate,实现如下方法:
extension ViewController: UITextFieldDelegate {
func textFieldDidChangeSelection(_ textField: UITextField) {
if textField.text?.isEmpty == true {
textField.text = "0"
}
}
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if textField.text?.isEmpty == true && string.isEmpty {
textField.text = "0"
return false
} else if textField.text == "0" {
textField.text = string
return false
}
return true
}
}
如果用户完全删除文本,文本字段将显示“0”。
如果用户以初始值“0”开始键入,“0”将消失并显示用户键入的文本。
编辑:要将视图控制器设置为文本字段的委托,请右键单击(或 ctrl + 单击)并从文本字段拖动到情节提要中的视图控制器:
并选择代表:
如果您不使用故事板或不想使用它,您可以随时以编程方式进行。
override func viewDidLoad() {
super.viewDidLoad()
textField.delegate = self
}
我在 ViewController 中有 5 个文本字段,我想在删除写入的数字后自动将其设置为数字“0”。
在从情节提要中输入数字之前默认设置为“0”(这是正确的)。但在删除书写数字后,文本字段为空。我希望它再次为空时自动设置为“0”。不仅是占位符,还有实际数字。
Before entering numbers
When entering numbers
After entering numbers
让view controller成为text field的delegate,实现如下方法:
extension ViewController: UITextFieldDelegate {
func textFieldDidChangeSelection(_ textField: UITextField) {
if textField.text?.isEmpty == true {
textField.text = "0"
}
}
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if textField.text?.isEmpty == true && string.isEmpty {
textField.text = "0"
return false
} else if textField.text == "0" {
textField.text = string
return false
}
return true
}
}
如果用户完全删除文本,文本字段将显示“0”。 如果用户以初始值“0”开始键入,“0”将消失并显示用户键入的文本。
编辑:要将视图控制器设置为文本字段的委托,请右键单击(或 ctrl + 单击)并从文本字段拖动到情节提要中的视图控制器:
并选择代表:
如果您不使用故事板或不想使用它,您可以随时以编程方式进行。
override func viewDidLoad() {
super.viewDidLoad()
textField.delegate = self
}