我想知道 myTextField(UITextField 的子类)的“text”属性何时被我的应用程序清除。由于我的应用程序中有许多文本字段,我希望它成为子类中的一种机制。
我发现建议使用观察者的帖子,我尝试了一下,它有效,但我想要更好的方法。
此方法的问题是,当我使用键盘输入单个字符,然后使用
从应用程序中清除“文本”时someField.text = ""
观察者调用我的应用程序 50 次,效率非常低。
这是我在 myTextField 类中使用的代码:
addObserver(self, forKeyPath: "text", options: .New, context: nil)
获取消息的函数是
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
if let newValue = change?[NSKeyValueChangeNewKey] {
print("text changed: \(newValue)")
}
}
print() 被调用超过 50 次,每次“newValue”为空。 此外,当我在应用程序中将其“text”属性设置为“”时,“text”属性中没有数据的其他文本字段会被调用 5 次,这也是低效的。
最佳答案
忽略我的帖子。我发现了我的问题。我把“addObserver()”放在“editingRectForBounds()”中,以为它在初始化时只被调用一次,但发现它被调用了很多次,所以我有超过50个“观察者”。一旦我修复了它,应用程序就会按预期工作。
关于ios - 检测 UITextField 何时更改而不使用键盘快速,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39817693/