ios - 检测 UITextField 何时更改而不使用键盘快速

标签 ios iphone swift

我想知道 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/

相关文章:

ios - UICollectionView 单元格的动态高度

ios - iPhone永久数据存储

iphone - 如何从另一个已排序的数组中获取索引数组?

iPhone:在代码中将信息按钮添加为导航栏中的右栏按钮项目

ios - 以小于其固有尺寸的尺寸显示 UIImageView

ios - 如何找到 UILabel 的现有 UIFontTextStyle?

ios - UIScrollView 内的 CPTXYGraph

iphone - 使用 UIScrollView 实现垂直滚动的正确方法

ios - 偏移 UIView 不会移动所有 View 元素

ios - 如何在 iOS 上增加 MIDI 合成器音量/增益而不失真?