ここに私のコードがあります
- (void)viewDidLoad
{
...
NSString *filepath = [[NSBundle mainBundle] pathForResource:@"movie" ofType:@"mov"];
NSURL *fileURL = [NSURL fileURLWithPath:filepath];
_moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:fileURL];
[self.view addSubview:_moviePlayerController.view];
_moviePlayerController.fullscreen = YES;
_moviePlayerController.scalingMode = MPMovieScalingModeAspectFit;
_moviePlayerController.controlStyle=MPMovieControlStyleDefault;
[_moviePlayerController play];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(movieIsOver:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:nil];
}
- (void)movieIsOver:(NSNotification *)notification
{
NSLog(@"movie is over");
[[NSNotificationCenter defaultCenter] removeObserver:self];
[self.moviePlayerController.view removeFromSuperview];//moviePlayerController is MPMoviePlayerController
}
ムービーが最後まで再生されると、「movie is over」ログが表示されず、moviePlayerController.view が削除されません。どうしてか分かりません。
編集: MPMoviePlayerPlaybackDidFinishNotification は正常に機能します。「ムービーが終了しました」というログが表示されます。問題は、moviePlayerController.view が削除されていないことです。