MPMoviePlayerViewController, вызываемый из UITabBarController, не отправляет уведомления в IOS5 - PullRequest
1 голос
/ 22 ноября 2011

У меня было приложение, которое отлично работало в 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?

1 Ответ

0 голосов
/ 21 сентября 2012

Я решил это, но не могу вспомнить, что на самом деле было исправление. Но я могу показать код, который работает сейчас:

[ notificationCenter addObserver: self 
                            selector:@selector(moviePlayerPlaybackDidFinish:) 
                            name: MPMoviePlayerPlaybackDidFinishNotification 
                            object: moviePlayer ];


self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];
self.moviePlayer.shouldAutoplay = NO;  
[self.moviePlayer setControlStyle:MPMovieControlStyleFullscreen];
[[self view] addSubview:[self.moviePlayer view]];   
[self.moviePlayer setFullscreen:YES animated:YES];
[self.moviePlayer play];
...