Кнопки «Следующая / Предыдущая» на iPhone MPMoviePlayerController - PullRequest
10 голосов
/ 16 июля 2009

При использовании MPMoviePlayerController кнопка воспроизведения окружена кнопками «Далее» и «Предыдущий».

Как получать уведомления, когда на них нажимают? Есть ли способ кормить MPMoviePlayerController списком (массивом) содержимого?

Ответы [ 3 ]

6 голосов
/ 17 июля 2009

Натан прав, когда вам нужно реализовать собственный пользовательский интерфейс для игрока, если вам нужны уведомления о кнопках. Вы можете получать уведомления от проигрывателя о состоянии воспроизведения.

из примера AddMusic, где self - это контроллер или модель, содержащая экземпляр MPMusicPlayerController:

- (void) registerForMediaPlayerNotifications {

    NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];

    [notificationCenter addObserver: self
                           selector: @selector (handle_NowPlayingItemChanged:)
                               name: MPMusicPlayerControllerNowPlayingItemDidChangeNotification
                             object: musicPlayer];

    [notificationCenter addObserver: self
                           selector: @selector (handle_PlaybackStateChanged:)
                               name: MPMusicPlayerControllerPlaybackStateDidChangeNotification
                             object: musicPlayer];

    /*
     // This sample doesn't use libray change notifications; this code is here to show how
     //     it's done if you need it.
     [notificationCenter addObserver: self
     selector: @selector (handle_iPodLibraryChanged:)
     name: MPMediaLibraryDidChangeNotification
     object: musicPlayer];

     [[MPMediaLibrary defaultMediaLibrary] beginGeneratingLibraryChangeNotifications];
     */

    [musicPlayer beginGeneratingPlaybackNotifications];
}
4 голосов
/ 16 июля 2009

Уведомления не генерируются, когда пользователь нажимает следующие / предыдущие кнопки (об этом следует сообщить об ошибке), поэтому единственный способ решить эту проблему без какого-либо неутвержденного обхода просмотра - реализовать собственный вид наложения видео:

MPMoviePlayerController* moviePlayer = [[MPMoviePlayerController alloc]
    initWithContentURL:someUrl];
moviePlayer.movieControlMode = MPMovieControlModeHidden;
[moviePlayer play];

NSArray* windows = [[UIApplication sharedApplication] windows];
if ([windows count] > 1) {
  UIWindow *moviePlayerWindow = [[UIApplication sharedApplication] keyWindow];
  [moviePlayerWindow addSubview:yourCustomOverlayView];
}

Не идеально, но стандартные элементы управления довольно легко перестраивать.

0 голосов
/ 16 июля 2009

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

...