2016-10-02 46 views
0

我想知道何时myTextField的“text”属性(它是UITextField的子类)被我的应用程序清除。由于我在我的应用程序中有很多textField,我希望它是来自子类内的机制。当UITextField被更改为不使用键盘快捷键时检测到

我发现了一些建议使用观察者的帖子,我尝试了它,它的工作原理,但我想要一个更好的方法。

这种方法的问题是,当我使用键盘输入一个字符,然后我清除使用

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)") 
    } 
} 

打印()与“NEWVALUE”之称的50倍以上的功能空荡荡的时间。 另外,当我在应用程序中将其“text”属性设置为“”时,其“text”属性中没有数据的其他textField被调用5次,这也是效率低下的。

回答

0

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