我如何监听 UILabel 内容变化?

How can I listen for UILabel content changes?

我想监听UIlabel中的内容变化,防止其长度大于7时发生变化,请问怎么办?我试过 set / get / willset / didset。好像不能满足我的需求

我写了一个简单的demo,当我按下按钮时,在显示区域添加一个数字。我不希望他的长度超出我的预期

在我的实际项目中,我正在开发一个计算器 我能想到的就是判断displayValue的长度,但是这样做会使我的代码冗长

要计算标签内的字符数,您可以像这样在文本中使用计数方法 属性

@IBOutlet weak var testLabel: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()
    testLabel.text = "duck"
    print(testLabel.text.count) //return 4
}

对于用户操作,您不能使用 UILabel,因为它不是用户交互的,您必须使用 UITextField 并连接到一个 UIAction 或更好地向我们解释您想要做什么。

didSet 可以更好地帮助你。 在代码的第 6 行中添加此代码。

var displayValue: String = "" {
    didSet {
        if displayValue.count <= 7 {
            customLabel.text = displayValue
        }
    }
}

然后在你的动作函数中,你只需要这样做。

@IBAction func clickBtn( _ sender: Any) {
    displayValue = displayValue + "0"
}