【问题标题】:How can I listen for UILabel content changes?如何收听 UILabel 内容更改?
【发布时间】:2021-10-05 16:31:24
【问题描述】:

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

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

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

【问题讨论】:

  • 我们需要更多关于如何设置的细节(最好是一些代码)。 UILabel 不只是神秘地改变它自己的内容,所以你必须有权访问你正在改变内容的调用站点。除非您可能正在谈论尝试对其进行子类化?请附上相关代码。
  • UILabel 还是 UITextField? UILabel 不能从用户以交互方式更改,因为它是一个标签,它是静态的或以编程方式可更改的。
  • 我已经更新了我的具体要求。请看一下,非常感谢

标签: ios swift uilabel


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    要计算标签内的字符,您可以使用 text 属性中的 count 方法,如下所示

    @IBOutlet weak var testLabel: UILabel!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        testLabel.text = "duck"
        print(testLabel.text.count) //return 4
    }
    

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

    【讨论】:

    • 我已经更新了我的具体要求。请看一下,非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    • 1970-01-01
    • 2023-02-09
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多