0

ここに私のコードがあります

- (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 が削除されていないことです。

4

2 に答える 2

1

私は解決策を見つけました:追加

_moviePlayerController.fullscreen = NO;

スーパービューからビューを削除する前に

于 2013-07-11T10:31:57.667 に答える