Правильное использование закончено: в setAnimationDidStopSelector :? - PullRequest
2 голосов
/ 06 августа 2011

У меня есть несколько игральных карт, которые переворачиваются, когда вы их нажимаете.Я хочу, чтобы некоторые вещи происходили после завершения анимации сальто, поэтому у меня есть это в моем UIView цикле анимации:

[UIView setAnimationDidStopSelector:@selector(flipAnimationDone:finished:context:)];

..., который вызывает это:

-(void)flipAnimationDone:(NSString *)animationID finished:(BOOL)finished context:(void *)context {
    if (finished == YES) {
        // other stuff here
    }
}

Теперь мне нужен бит if (finished == YES), потому что в противном случае other stuff сработает , даже если пользователь снова коснется карты в середине анимации , что плохо - это должно произойти, только еслифлип анимация завершается полностью:)

Проблема в том, что это не работает.Если у меня есть if там, other stuff никогда не срабатывает, несмотря ни на что.Если я пропущу if, другие вещи сработают, но, возможно, не в то время.

Что я делаю не так с битом finished, из-за которого он не работает должным образом?

Спасибо!

1 Ответ

4 голосов
/ 06 августа 2011

Обратите внимание, что в документации сказано, что сигнатура метода

- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context;

В частности,

finished
NSNumber-объект, содержащий логическое значение.Значение YES, если анимация дошла до завершения, прежде чем она остановилась, или NO, если она не остановилась.

Итак, вы должны сделать это (NSNumber *)finished и if ([finished boolValue]) { ... }.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...