swift - 如果为空,则始终在 UITextField 中设置“0”,即使在输入内容并重做/删除之后也是如此
问题描述
我在 ViewController 中有 5 个文本字段,我想在删除书面数字后自动将其设置为数字“0”。
在从情节提要输入数字之前默认设置为“0”(这是正确的)。但删除书写数字后,文本字段为空。我希望它再次为空时自动设置为“0”。不仅仅是占位符,还有实际数字。
解决方案
使视图控制器成为文本字段的委托,并实现以下方法:
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
}
推荐阅读
- kubernetes - 是否可以从 azurerm_netapp_volume 数据源获取完整路径?
- python - 寻找调和平均值的高效算法
- python - 为具有已知不确定性的一组方程寻找最佳拟合参数
- sql-server - 在 MS SQL Server 2019 中使用 pandas 0.25.1
- python - 在带有多个双引号的字段内读取带有分隔符的 csv 文件
- wordpress - 我的 WordPress 网站遇到了致命错误:未捕获的错误:调用未定义的方法 WP_Site_Health::get_instance()
- google-sheets - 表格 - 使用 3 个条件(包括变量)进行查找
- ios - 有什么方法可以在没有材料主题的情况下在 Swift 中从 MDCChipField 更改芯片背景颜色?
- javascript - 无法使用 ng-container Angular 9 Flex 布局读取未定义 fxFlex 问题的属性“setProperty”
- android - 如果已经有一个“等待”处于活动状态,则应用程序崩溃