9

Я использую MPMoviePlayerController, как я могу определить, когда фильм действительно начал играть - в отличие от того, когда пользователь играет с элементами управления поиском?Как обнаружить MPMoviePlayerController запускает фильм?

Из тестов, которые я сделал, я всегда получаю событие «изменение состояния нагрузки», а (moviePlayer.loadState == MPMovieLoadStatePlayable) равно TRUE всякий раз, когда начинается фильм. После того, как пользователь перетащил контроль поиска (даже если он перетащил его из конца в середину, начало фильма). Как отличить начало и поиск фильма?

+0

Может быть, [это] (https://developer.apple.com/library/ ИОС/документация/медиаплеер/ссылка/MPMoviePlayerController_Class/см ence/Reference.html # // apple_ref/doc/c_ref/MPMoviePlaybackState) помогает? – AlexR

+0

проверьте это http://stackoverflow.com/questions/5787394/find-out-if-mpmovieplayercontroller-is-currently-playing – karthika

ответ

28
MPMoviePlaybackState 
    Constants describing the current playback state of the movie player. 
    enum { 
     MPMoviePlaybackStateStopped, 
     MPMoviePlaybackStatePlaying, 
     MPMoviePlaybackStatePaused, 
     MPMoviePlaybackStateInterrupted, 
     MPMoviePlaybackStateSeekingForward, 
     MPMoviePlaybackStateSeekingBackward 
    }; 
    typedef NSInteger MPMoviePlaybackState; 

Регистрация для MPMoviePlayerPlaybackStateDidChangeNotification

[[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(MPMoviePlayerPlaybackStateDidChange:) 
               name:MPMoviePlayerPlaybackStateDidChangeNotification 
               object:nil]; 

Проверить в этой функции MPMoviePlaybackState

- (void)MPMoviePlayerPlaybackStateDidChange:(NSNotification *)notification 
    { 
     if (player.playbackState == MPMoviePlaybackStatePlaying) 
     { //playing 
     } 
     if (player.playbackState == MPMoviePlaybackStateStopped) 
     { //stopped 
     }if (player.playbackState == MPMoviePlaybackStatePaused) 
     { //paused 
     }if (player.playbackState == MPMoviePlaybackStateInterrupted) 
     { //interrupted 
     }if (player.playbackState == MPMoviePlaybackStateSeekingForward) 
     { //seeking forward 
     }if (player.playbackState == MPMoviePlaybackStateSeekingBackward) 
     { //seeking backward 
     } 

} 

Удалить уведомление по

[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:nil]; 

См: MPMoviePlaybackState

+0

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

+0

@ sagimann- см. Мои обновленные анкеты –

+0

Почему это не правильный ответ? – Pier

1

Для быстрой

Добавить наблюдатель

let defaultCenter: NSNotificationCenter = NSNotificationCenter.defaultCenter() 
defaultCenter.addObserver(self, selector: "moviePlayerPlaybackStateDidChange:", name: MPMoviePlayerPlaybackStateDidChangeNotification, object: nil) 

Функция

func moviePlayerPlaybackStateDidChange(notification: NSNotification) { 
     let moviePlayerController = notification.object as! MPMoviePlayerController 

     var playbackState: String = "Unknown" 
     switch moviePlayerController.playbackState { 
     case .Stopped: 
      playbackState = "Stopped" 
     case .Playing: 
      playbackState = "Playing" 
     case .Paused: 
      playbackState = "Paused" 
     case .Interrupted: 
      playbackState = "Interrupted" 
     case .SeekingForward: 
      playbackState = "Seeking Forward" 
     case .SeekingBackward: 
      playbackState = "Seeking Backward" 
     } 

     print("Playback State: %@", playbackState) 
    } 
Смежные вопросы