[Objective-C]MPMoviePlayerControllerで再生完了時の通知が発生しない
こんにちは、プログラマのLFです。
今回の記事は自分のための備忘録的な意味合いで書いています。
MPMoviePlayerControllerで動画を再生させたのですが
再生完了時の通知が発生しないという問題に遭遇しました。
結論からいうと、生成したMPMoviePlayerControllerを保持するためにプロパティを宣言して
MPMoviePlayerControllerインスタンスを保持させておかないとダメみたいです。
ViewController.m
1 |
@interface ViewController ()<br />@property (strong, nonatomic) MPMoviePlayerController *movPlayer; <br />//インスタンスを保持する変数(これがないとdelegateが動作しない)<br />@end<br /><br />@implementation ViewController<br /><br />- (void)viewDidLoad <br />{<br /> [super viewDidLoad];<br/><br/>(省略)<br/><br/> self.movPlayer = [[MPMoviePlayerController alloc] initWithContentURL:movURL];<br/><br/> [[NSNotificationCenter defaultCenter] addObserver:self<br/> selector:@selector(moviePlayBackDidFinish:)<br/> name:MPMoviePlayerPlaybackDidFinishNotification<br/> object:self.movPlayer];<br/><br/>}<br/><br /><br/>//再生終了後(MPMoviePlayer delegate)<br/>- (void)moviePlayBackDidFinish:(NSNotification*)notification<br/>{<br/> [[NSNotificationCenter defaultCenter] removeObserver:self];<br/> MPMoviePlayerController* moviePlayerObj = [notification object];<br/> [moviePlayerObj.view removeFromSuperview];<br/>}<br /> |
MPMoviePlayerControllerは過去に何度も使っているのに、
とってもいまさらなことで悩んでしまう辺り、
まだまだ修行が足りませんね…。