Вызов метода, когда кнопка покидает выделенное состояние - PullRequest
4 голосов
/ 02 апреля 2012

Я хочу выполнить действие, когда кнопка подсвечена, и выполнить другое действие, когда она выйдет из выделенного состояния. Любой совет?

Ответы [ 2 ]

13 голосов
/ 02 апреля 2012

Вы можете использовать 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 иудерживая палец вниз, перетащите за пределы кнопки

1 голос
/ 02 апреля 2012

Как это?

self.testButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[self.testButton addTarget:self action:@selector(methodOne) forControlEvents:UIControlEventTouchDown];
[self.testButton addTarget:self action:@selector(methodTwo) forControlEvents:UIControlEventTouchUpInside];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...