2013-10-24 2 views
0

Я добавил этот код:Обработка кнопка игрока в MPMoviePlayer

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loadMoviePlayerStateChanged:) 
              name:MPMoviePlayerLoadStateDidChangeNotification 
              object:self.mp]; 

Это пожары каждое изменение состояния моего MPMoviePlayer, в эту функцию:

- (void) loadMoviePlayerStateChanged:(NSNotification*)notification 
{ 

    MPMoviePlayerController *Player = notification.object; 

    MPMoviePlaybackState playbackState = Player.playbackState; 
    if (playbackState == MPMoviePlaybackStateSeekingForward) 
    { 
     NSLog(@"Forward"); 
    } 
    else if (playbackState == MPMoviePlaybackStateSeekingBackward) 
    { 
     NSLog(@"Backward"); 
    } 
} 

Он входит в этой функцию ...

Но проблема в MPMoviePlaybackState воспроизведенияState = Player.playbackState;

playerState - 1, когда я запускаю плеер, и все остальные изменения дают 0. - Как это может быть?

Edit:

Реализация этого также каждый раз дает ноль:

NSNumber *reason = [notification.userInfo objectForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey]; 

if ([reason intValue] == MPMoviePlaybackStateSeekingForward) { 

    // done button clicked! 

} 
+0

Вы хотите загрузить состояние видеопроигрывателя или состояние воспроизведения? –

ответ

1

Проблема заключается в том, что вы добавляете уведомление для изменения Loadstate из видеоплеера и пытаетесь получить доступ к его состоянию воспроизведения, если вы хотите уведомление об изменении состояния воспроизведения вам необходимо добавить наблюдателя для уведомления об изменении воспроизведения

// для изменения воспроизведения

[[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(playbackChanged) 
                name:MPMoviePlayerPlaybackStateDidChangeNotification object:self.mp]; 




- (void)playbackChanged { 

switch ([self.mp playbackState]) { 
    case MPMoviePlaybackStateStopped: 
     NSLog(@"Stopped") 
     break; 
    case MPMoviePlaybackStatePlaying: 
     NSLog(@"Playing"); 
     break; 
    case MPMoviePlaybackStatePaused: 
     NSLog(@"Paused"); 
     break; 
    case MPMoviePlaybackStateInterrupted: 
     NSLog(@"Interrupted"); 
     break; 
    case MPMoviePlaybackStateSeekingForward: 
     NSLog(@"Seeking Forward"); 
     break; 
    case MPMoviePlaybackStateSeekingBackward: 
     NSLog(@"Seeking Backward"); 
     break; 
    default: 
     break; 
} 
} 
Смежные вопросы