gpt4 book ai didi

iphone - 如何监听 UIButton 状态变化?

转载 作者:太空狗 更新时间:2023-10-30 03:13:44 30 4
gpt4 key购买 nike

我正在使用通用功能扩展 UIButton,以根据显示的标题更改某些外观属性。

为此,我需要检测并响应“state”属性的变化。如果用户为不同的状态设置不同的标题,我会确保正确调整外观。我假设我需要使用如下所示的某种 KVO:

[self addObserver:self 
forKeyPath:@"state"
options:NSKeyValueObservingOptionNew
context:nil];

但这似乎并没有触发@"state"或@"currentTitle"的 observeValueForKeyPath:... 方法。我认为这是因为 UIButton 没有为这些属性实现 KVO 模式。

我不想只听点击。这些事件会导致状态发生变化,但并不是唯一的潜在原因。

有谁知道监听和响应 UIButton 状态变化的方法吗?

谢谢


更新

由于我在过去几年中学到了一些东西,所以只是一个笔记 ;)。

从那以后,我与一些知道的 Apple 人员交谈过,KVO 不能在状态属性上工作的原因是 UIKit 的 NONE 保证是 KVO 兼容的。认为这值得在这里重复——如果您正在尝试监听 UIKit 框架类的任何属性,请注意它可能有效但不受官方支持,并且可能会在不同的 iOS 版本上中断。

最佳答案

好吧,我想出了一个可行的解决方案。可以监听按钮的titleLabel的text属性。

[self.titleLabel addObserver:self 
forKeyPath:@"text"
options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld
context:nil];

似乎每次更改都会触发两次,因此您应该检查以确保传递的更改字典中的@"old"和@"new"的值不同。

注意:不要直接使用@"old"和@"new"。常量分别为 NSKeyValueChangeOldKey 和 NSKeyValueChangeNewKey。

关于iphone - 如何监听 UIButton 状态变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2503721/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com