先日MPMoviePlayerControllerでローカルファイルを再生するコードを書いたのですが、戻る・進むボタンが正常に機能しませんでした。
具体的には
- 再生後すぐに戻るボタンをタップすると動画再生が停止する
- 進むボタンをタップすると動画再生が停止する
- 少し再生した後に戻るボタンをタップするとはじめから再生される(正常に動作)
という状況でした。
検索しても答えは見つからず、Twitterで質問してみましたが、この現象を解決する回答はありませんでした。(が、今後役に立つであろう事を教えてもらえました。ありがとうございました。)
再度Stack Overflowで検索したところやっと解決方法を見つけました。
To fix back/forward (or previous/next) buttons you should do the following:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerPlaybackStateDidChange:) name:MPMoviePlayerPlaybackStateDidChangeNotification object:nil];
…
– (void) moviePlayerPlaybackStateDidChange: (NSNotification *) notification {
if (moviePlayer.playbackState == MPMoviePlaybackStateStopped) {
[moviePlayer setContentURL:[moviePlayer contentURL]];
[moviePlayer play];
}
}[From MPMoviePlayerController problems on iPad – Stack Overflow]
これが答えでした。つまりPlaybackStateが変更された時に、playbackStateがMPMoviePlaybackStateStoppedだったらコンテンツURLを再設定して再生するというコードです。
これって、わざわざこのようなコードを入れないといけないのは少し変です。バグなのでしょうか?それともドキュメントのどこかに書いてあることなのでしょうか?