我只是想知道如何在按钮标题更改时触发某些功能? 我试图使用这个命令,但没有任何作用:
[button addTarget:self
action:@selector(function:)
forControl:UIControlEventValueChange];
答案 0 :(得分:7)
您可以在viewcontroller中使用具有按钮插座的观察者:
首先添加观察者(例如,在viewDidLoad中)
[self.button addObserver:self
forKeyPath:@"titleLabel.text"
options:NSKeyValueObservingOptionNew
context:NULL];
覆盖viewcontroller上的默认观察者方法
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context {
if ([keyPath isEqualToString:@"titleLabel.text"]) {
// Value changed
UIButton *button = object;
NSString *title = button.titleLabel.text;
}
}
在dealloc函数
中删除自己作为观察者[self.button removeObserver:self forKeyPath:@"titleLabel.text"];
答案 1 :(得分:1)
使用KVO
(即Key-Value-Observer
)收听UIButton's
titleLabel
的文字属性。
尝试以下代码
[button.titleLabel addObserver:self
forKeyPath:@"text"
options: NSKeyValueChangeOldKey | NSKeyValueChangeNewKey
context:nil];
然后为它实现观察者
-(void)addObserver:(NSObject *)observer
forKeyPath:(NSString *)keyPath
options:(NSKeyValueObservingOptions)options
context:(void *)context{
// your code
}
答案 2 :(得分:0)
另一个逻辑是:在 .h 文件中声明UIButton
及其属性并使用 .m 文件中的代码
if([button.titleLabel.text isEqualToString:updatedButtonTitleString])
{
// title is same
}
else
{
// title is updated
}