У меня было приложение, которое отлично работало в IOS4, но перестало отображать видео в IOS5. Ранее я использовал MPMoviePlayerController, поэтому я переключился на MPMoviePlayerViewController, и теперь видео отлично отображается в IOS5.
Но теперь в IOS5 при нажатии кнопки «Готово» воспроизведение видео прекращается в MPMoviePlayerViewController, но MPMoviePlayerController больше не вызывает уведомления.
Иерархия выглядит так:
AppDelegate -> UITabBarController -> UITableView -> UIViewController, внутри которого вызывается MPMoviePlayerViewController. Внутри UIViewController код выглядит так:
MPMoviePlayerViewController *tmpMoviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:movieURL];
self.moviePlayer = tmpMoviePlayer;
[self presentMoviePlayerViewControllerAnimated:self.moviePlayer];
NSNotificationCenter *notificationCenter = [ NSNotificationCenter defaultCenter ];
[notificationCenter addObserver:self
selector:@selector(moviePlayerPlaybackDidFinish:)
name:MPMoviePlayerWillExitFullscreenNotification
object:[self.moviePlayer moviePlayer ]];
Я также попробовал следующие имена уведомлений, и ни одно из них не сработало:
MPMoviePlayerPlaybackDidFinishNotification
MPMoviePlayerPlaybackStateDidChangeNotification
MPMoviePlayerPlaybackDidFinishReasonUserInfoKey
MPMoviePlayerNowPlayingMovieDidChangeNotification
MPMoviePlayerWillExitFullscreenNotification
MPMoviePlayerDidExitFullscreenNotification
Я видел сообщение SO , в котором MPMoviePlayerViewController был вызван из UITabBarController, а представление с именем presentMoviePlayerViewControllerAnimated выбрано неправильно, но я не смог заставить работать другое представление для вызова presentMoviePlayerViewControllerAnimated.
Есть идеи, почему уведомления больше не вызываются при нажатии кнопки Done в MPMoviePlayerViewController?