我正在扩展UIButton
的通用功能,以根据显示的标题更改某些外观属性。
为了实现这一点,我需要检测和响应“状态”属性的更改。这样我就可以确保如果用户为不同的状态设置了不同的标题,外观会被适当地调整。我假设我需要使用类似以下代码的KVO:
[self addObserver:self
forKeyPath:@"state"
options:NSKeyValueObservingOptionNew
context:nil];
然而,这似乎无法激发对@"state"或@"currentTitle"的observeValueForKeyPath:... 方法。我猜这是因为UIButton未实现这些属性的KVO模式。
我不想只监听点击事件。那些事件会导致状态改变,但并不是唯一的潜在原因。
有谁知道一种监听和响应UIButton状态改变的方法吗?
谢谢
更新
只是一个注意事项,因为我在过去几年中学到了一些东西 ;)
我后来与一些了解情况的苹果人交谈,KVO不适用于state属性的原因在于UIKit中没有一个被保证符合KVO规范。认为这值得在此重申 - 如果您尝试监听UIKit框架类的任何属性,请注意它可能有效,但不受官方支持,并且可能在不同的iOS版本上出现问题。