Плагин YouTube сам по себе является модальным контроллером вида.Он возвращается к своему presentingViewController
, когда нажата кнопка «Готово».Его presentingViewController
- это не ваш контроллер модального вида, а viewController, который вызвал [presentModalViewController:animated:]
для представления вашего контроллера модального вида.Поскольку оригинальный контроллер модального вида все еще активен, приложение ведет себя плохо.
Чтобы устранить проблему,
1) Отслеживайте, был ли контроллер модального представления представлен, но не отклонен.
2) В методе viewDidAppear
контроллера представления, если модальный контроллер представления был представлен и не отклонен, отклонить и представить его снова.
Например, в контроллере, который представляет модальныйКонтроллер веб-просмотра:
- (void) presentModalWebViewController:(BOOL) animated {
// Create webViewController here.
[self presentModalViewController:webViewController animated:animated];
self.modalWebViewPresented = YES;
}
- (void) dismissModalWebViewController:(BOOL) animated {
self.modalWebViewPresented = NO;
[self dismissModalViewControllerAnimated:animated];
}
- (void) viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
if (self.modalWebViewPresented) {
// Note: iOS thinks the previous modal view controller is displayed.
// It must be dismissed first before a new one can be displayed.
// No animation is needed as the YouTube plugin already provides some.
[self dismissModalWebViewController:NO];
[self presentModalWebViewController:NO];
}
}