gpt4 book ai didi

swift - 观察 UITextView 子类中的文本

转载 作者:搜寻专家 更新时间:2023-11-01 06:53:22 26 4
gpt4 key购买 nike

我要观察var文本! UITextView 的属性,我不想使用委托(delegate)。

我的解决方案是这样的:

class MessageTextView: UITextView {

override var text: String! {
didSet {
print(text)
}
}
}

但在 UITextView 的文本字段中键入时不会调用它。我也尝试了 textStorage 和 selectedRange。对我来说,覆盖文本才有意义,但它不起作用。有什么解决办法吗?

编辑:这是我的解决方案:

deinit {

NotificationCenter.default.removeObserver(self, name: UITextView.textDidChangeNotification, object: nil)
}

func setObserverNotification() {
NotificationCenter.default.addObserver(self, selector: #selector(updateText), name: UITextView.textDidChangeNotification, object: nil)
}

@objc private func updateText() {
// Do updates here
}

最佳答案

For me it only makes sense to override text, but it does not work.

UITextView 似乎不太可能实际设置您每次键入字符时尝试覆盖的任何属性。 TextView 的实际内容保存在 UITextStorage 对象中,它只创建一次并根据需要进行修改,因此 textStorage setter 的重写最多只会被调用一次,而不是每次你类型。 text setter 根本不会因为编辑而被调用——您可以调用它来获取或设置内容,但编辑不会更改整个内容。

如果您想了解 TextView 何时收到通知但又不想使用委托(delegate),那么您可以改为监听通知。 UITextViewTextDidChangeNotification 会在文本发生更改时发送。

关于swift - 观察 UITextView 子类中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55575395/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com