2013-08-16 2 views
0

У меня есть пользовательский UIViewController, который отображается модально. Я называю это mainMenu.увольнениеПросмотрКонтроллерАнализ: завершение: происходит мгновенно, если я не блокирую его

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

- (void) dismissCustomViewController { 
    [mainMenu slideMenuPanelsAway]; 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

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

Какой правильный способ заставить контроллер просмотра подождать, пока меню не исчезнет до исчезновения?

Я пробовал кучу вещей. Я нашел только один способ заставить его работать:

- (void) dismissCustomViewController { 
    [mainMenu slideMenuPanelsAway]; 
    [self performSelector:@selector(dismissController) withObject:nil 
     afterDelay: 2.0f]; 
} 

(. Я написал специальный метод, называемый dismissController просто сделать селектор проще в использовании, в основном только вызывает [self dismissViewControllerAnimated:YES completion:nil];)

Это только кажется ужасно kludgey использовать ручную настройку задержки вместо фактического базирования на завершении анимации. Там должен быть лучший способ, не так ли?

+0

Где ваш код анимации? Если вы хотите что-то сделать по завершении анимации, вам придется ее там положить. –

+0

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

ответ

3

Используйте animateWithDuration: анимации: завершение :, и сделайте «слайд-материал» в блоке анимации и выполните увольнение в блоке завершения.

[UIView animateWithDuration:.5 animations:^{ 
     //Your custom animation stuff here 

    } completion:^(BOOL finished) { 
     [self dismissViewControllerAnimated:YES completion:nil]; 
    }]; 
+0

Не работает ли это только в том случае, если анимация является действительной анимацией UIView? Потому что это не так. –

+1

@LeMotJuiced, что это за анимация? Вы сказали, что у вас раздвижные взгляды. – rdelmar

+0

Они скользящие виды, которые не используют анимацию UIView. Они используют методы NDA. –

 Смежные вопросы

  • Нет связанных вопросов^_^