UIView блочная анимация с обработчиком завершения и установкой скрытых UIViews - PullRequest
2 голосов
/ 17 февраля 2011

Мне интересны новые блочные анимации в iOS 4. То есть синтаксис

  [UIView animateWithDuration:.25 delay:0 options:UIViewAnimationOptionAllowUserInteraction  animations:^
        {
              someview.alpha = 0

        } completion::^(BOOL finished) 
             {
                 focusAndExposureBox.hidden = true;
           }];

У меня есть случай, когда я использую распознаватели жестов и анимирую представление в конце жеста.,У меня есть обработчик завершения, который устанавливает someview скрытым (по соображениям производительности мне нужно сделать это).Часто взаимодействие блокируется из-за установки скрытого свойства.Мое предыдущее решение состоит в том, чтобы использовать предыдущий стиль анимации с обработчиком animationDidStop

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:.25];
someview.alpha = 0;
[UIView commitAnimations];

Однако я хотел бы использовать более новый стиль, если это возможно, потому что он имеет более чистый метод выполнения действий после анимациизаканчивается, и рекомендуется Apple.Итак, в настоящее время я использую этот хакер:

 [UIView animateWithDuration:1 delay:0 
      options:UIViewAnimationOptionAllowUserInteraction animations:^{

           someview.alpha = 0;

       } completion:^(BOOL finished) {


[someview performSelector:@selector(setHidden:) withObject:[NSNumber numberWithBool:true] afterDelay:1];

            }];

Кто-нибудь знает способ предотвратить блокировку в этом случае?

1 Ответ

0 голосов
/ 17 февраля 2011

Вы должны быть в состоянии избежать проблемы блокирования, если вы используете распознаватели жестов с делегатами, поскольку функция делегата будет вызываться независимо от основного потока.

...