У меня возникли проблемы с отображением полноэкранного фильма в приложении для iPad, а затем разрешено пользователю отклонять его с помощью кнопки «Готово» или «без полноэкранного режима», на панели управления проигрывателя.Правильное отображение и отключение полноэкранного MPMoviePlayerController в iOS 3.2 (iPad)
Первоначально я использовал MPMoviePlayerViewController
для презентации фильма, но я не получал полноэкранные уведомления ввода/выхода из своего объекта MPMoviePlayerController
, поэтому я переключился на это самостоятельно.
Я могу заставить фильм появляться в полноэкранном режиме (хотя переход является janky), но когда нажаты кнопки «Готово» или «Не полноэкранный режим», никакое действие не предпринимается игроком. Я отправил мой код ниже:
- (void)startPlayingMovieWithURLString:(NSString *)movieURLString {
// I get all of these callbacks **EXCEPT** the "willExitFullScreen:" callback.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterFullScreen:) name:MPMoviePlayerWillEnterFullscreenNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willExitFullScreen:) name:MPMoviePlayerWillExitFullscreenNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didFinishPlayback:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
[self.moviePlayerController setContentURL:someExistingURL];
// "self" is a UIViewController subclass, and is presented as a "fullscreen" modal view controller from its parent
// I'm setting the movie player's view's frame to take up the full rectangle of my view controller, but really I want the movie to be completely removed when the user presses "done" (that is, removed from the view hierarchy). Not sure when/where to do this.
self.moviePlayerController.view.frame = self.view.frame;
[self.view addSubview:self.moviePlayerController.view];
[self.moviePlayerController setFullscreen:YES animated:YES];
}
А вот код для моего didFinish обратного вызова
- (void)didFinishPlayback:(NSNotification *)notification {
// This ends up recursively telling the player that playback ended, thus calling this method, thus…well you get the picture.
// What I'm trying to do here is just make the player go away and show my old UI again.
[self.moviePlayerController setFullscreen:NO animated:YES];
}
Так, очевидно, что я делаю что-то неправильно, но я был вверх и вниз по документации и I не могу понять, как заставить фильм просто уйти. Я понял, что это будет более интуитивно, чем это. Что я делаю не так?
Это полезно, и теперь я могу выйти из полноэкранного режима, когда пользователь нажимает кнопку, однако обратный вызов -playbackFinished: callback никогда не выполняется для меня, и я не могу на всю жизнь понять, почему нет. Вы знаете какие-либо причины, почему это может произойти? – jbrennan
Даже когда фильм воспроизводится до конца? Странно, я никогда не сталкивался с этим. –
, если MPMoviePlayerDidExitFullscreenNotification вызывается как при касании «Готово», так и при выходе из полноэкранного режима, откуда вы знаете, что называется? Возможно, пользователь выходит из полноэкранного режима, и в этом случае вы не хотите удалять представление, которое я предполагаю. –