检测何时更改UITextField而不使用键盘swift

时间:2016-10-02 13:52:04

标签: ios iphone swift

我想知道"文字" myTextField的属性,它是UITextField的子类,由我的应用程序清除。由于我的应用程序中有很多textFields,我希望它是子类中的一种机制。

我发现建议使用观察者的帖子,我尝试了它并且它有效,但我想要一个更好的方法。

这种方法的问题在于,当我使用键盘输入单个字符然后我清除" 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)")
    }
}

使用&#34; newValue&#34;调用print()50次以上是空的时间。 此外,其他textFields在&#34; text&#34;中没有数据。当我设置&#34;文本&#34;财产到&#34;&#34;从我的应用程序中,这也是低效的。

1 个答案:

答案 0 :(得分:0)

忽略我的帖子。我发现了我的问题。我把“addObserver()”放在“editingRectForBounds()”里面,认为它只在初始化时调用一次,但发现它被多次调用,所以我有超过50个“观察者”。一旦我修复它,应用程序就会按预期工作。