Вы можете использовать KVO
[button addObserver:self forKeyPath:@"highlighted" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:NULL];
Тогда
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([@"highlighted" isEqualToString:keyPath]) {
NSNumber *new = [change objectForKey:NSKeyValueChangeNewKey];
NSNumber *old = [change objectForKey:NSKeyValueChangeOldKey];
if (old && [new isEqualToNumber:old]) {
NSLog(@"Highlight state has not changed");
} else {
NSLog(@"Highlight state has changed to %d", [object isHighlighted]);
}
}
}
Вы действительно заботитесь только об изменениях, и они будут вызываться каждый раз, когда изменяется состояние, например, если вы перемещаете select иудерживая палец вниз, перетащите за пределы кнопки