2

「完了」ボタンを押さなくても、再生して自動的に閉じるムービーを取得しようとしています。チュートリアルに正確に従っているため、これは最近の iOS 6 の問題だと思います。これが私のコードです、助けてください:

    - (IBAction)playMovie:(id)sender
{
    NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
                                         pathForResource:@"RomneyFlipSequence1" ofType:@"mov"]];
    _moviePlayer =
    [[MPMoviePlayerController alloc]
     initWithContentURL:url];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(moviePlayBackDidFinish:)
                                                 name:MPMoviePlayerPlaybackDidFinishNotification
                                               object:_moviePlayer];

    _moviePlayer.controlStyle = MPMovieControlStyleDefault;
    _moviePlayer.shouldAutoplay = YES;
    [self.view addSubview:_moviePlayer.view];
    [_moviePlayer setFullscreen:YES animated:NO];
}

- (void) moviePlayBackDidFinish:(NSNotification*)notification {

    MPMoviePlayerController *player = [notification object];

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

    if ([player
         respondsToSelector:@selector(setFullscreen:animated:)])
    {
    [player.view removeFromSuperview];
    }
}
@end
4

2 に答える 2

1

プレーヤーをフルスクリーン モードにしました。

[_moviePlayer setFullscreen:YES animated:NO];

SOで他のソリューションを読むと、「完了」を押すと、最初にプレーヤーが全画面表示から外れ、次に通知がスローされるようです。この回答を読んだ後、追加

[_moviePlayer setFullscreen:NO animated:YES];

removeFromSuperviewあなたの電話があなたの問題を解決する前に。

上記が機能しない場合は、最初にプレーヤーを停止してみてください。完全なコードが表示されます。

-(void)removePlayer:(MPMoviePlayerController *)player{

    NSLog(@"Playback Finished");
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:_moviePlayer];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerDidExitFullscreenNotification object:_moviePlayer];

    [_moviePlayer stop]; // <-- May not be needed
    if ([_moviePlayer respondsToSelector:@selector(setFullscreen:animated:)])
    {
        [_moviePlayer setFullscreen:NO animated:YES];
        [_moviePlayer.view removeFromSuperview];

    }

    _moviePlayer=nil;



}

「Done」と「PlayBackFinished」の両方の通知に同じ方法を使用します

お役に立てれば。

于 2013-05-18T18:02:36.947 に答える
0

ビューとして追加_moviePlayer.viewし、削除しようとしていますplayer.view

私はこれがそれを行うと思います:

- (void) moviePlayBackDidFinish:(NSNotification*)notification {

MPMoviePlayerController *player = [notification object];

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

if ([player
     respondsToSelector:@selector(setFullscreen:animated:)])
{
[_moviePlayer.view removeFromSuperview];
}

}

于 2012-10-10T06:36:06.090 に答える