首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果为空,则始终在UITextField中设置"0“,即使在键入内容并重做/删除之后也是如此

如果为空,则始终在UITextField中设置"0“,即使在键入内容并重做/删除之后也是如此
EN

Stack Overflow用户
提问于 2020-04-13 21:07:22
回答 1查看 161关注 0票数 0

我在ViewController中有5个文本字段,我希望在删除手写数字后自动将它们设置为数字"0“。

在从故事板输入数字之前,默认设置为"0“(这是正确的)。但删除手写数字后,文本字段为空。我希望它再次为空时自动设置为"0“。而且不仅仅是占位符,还有实际的数字。

Before entering numbers

When entering numbers

After entering numbers

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-13 21:58:36

将视图控制器作为文本字段的委托,并实现以下方法:

代码语言:javascript
复制
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键的同时单击),然后从文本字段拖动到情节提要中的视图控制器:

然后选择delegate:

如果你不使用情节提要或者不想使用它,你可以通过编程的方式来做。

代码语言:javascript
复制
    override func viewDidLoad() {
        super.viewDidLoad()

        textField.delegate = self
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61188576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档