【发布时间】:2011-11-24 12:49:57
【问题描述】:
UIButton 有一个 state 属性,似乎所有帐户都符合 KVO 标准,并且没有文档表明其他情况。但是,当我向 UIButton 的 state 属性添加观察者时,从未调用过观察者回调。怎么会?
【问题讨论】:
标签: iphone objective-c ios key-value-observing key-value-coding
UIButton 有一个 state 属性,似乎所有帐户都符合 KVO 标准,并且没有文档表明其他情况。但是,当我向 UIButton 的 state 属性添加观察者时,从未调用过观察者回调。怎么会?
【问题讨论】:
标签: iphone objective-c ios key-value-observing key-value-coding
如果你查看UIControl的文档,state属性标记为:synthesized from other flags.
我想这就是为什么对此属性的更改不符合 KVO 的原因。
但是,您可以简单地注册并观察您需要的值 - highlighted, selected, enabled. 这些属性符合 KVO,当它们发生变化时您将获得观察者回调。
【讨论】:
UIButton 上观察selected,但没有调用我的观察者。切换到highlighted,它工作。使用 Swift 2。
highlighted。它被调用了两次(突出显示和取消突出显示),所以如果highlighted 是true,我会忽略它,然后继续检查按钮的selected 状态。