0

viewDidLoadメソッドでビデオを再生する関数を呼び出すことで、アプリの起動時にビデオを正常に再生することができました。しかし、そうすると、「完了」ボタンが表示されなくなります。「完了」ボタンは、ボタンを使用して同じ関数を呼び出した場合にのみ表示されるようです。以下のコードを投稿しています。viewDidLoadメソッドで同じ関数を呼び出して、これをどのように表示しますか?私は何を間違っているのですか?ありがとうございました!

私のviewcontroller.mファイルで

- (void)viewDidLoad
{
      [super viewDidLoad];

      [self playMedia];
}

- (void) playMedia {

        //hide status bar first
        [[UIApplication sharedApplication] setStatusBarHidden:YES];
        //resets again in playMediaFinished

        movieFile = [[NSBundle mainBundle] pathForResource:@"sec" ofType:@"mp4"];
        NSURL *url = [NSURL fileURLWithPath: movieFile];

        moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];

        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playMediaFinished:) name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer];

        moviePlayer.controlStyle = MPMovieControlStyleDefault;

        [moviePlayer setFullscreen:NO animated:YES];
        [self.view addSubview:moviePlayer.view];

        moviePlayer.controlStyle = MPMovieControlStyleDefault;

        CGAffineTransform transform = self.view.transform;

        [moviePlayer.view setFrame:CGRectMake(0, 0, 480, 320)];

        moviePlayer.shouldAutoplay = YES;

        NSLog(@"Should be playing Movie");

    }

- (void) playMediaFinished: (NSNotification*) theNotification {
       moviePlayer = [theNotification object];

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

        if ([moviePlayer
             respondsToSelector:@selector(setFullscreen:animated:)])
        {
            [moviePlayer.view removeFromSuperview];
            [playerView removeFromSuperview];
            //reset status bar
            [[UIApplication sharedApplication] setStatusBarHidden:NO];
        }    
            NSLog(@"Should be DONE playing Movie");

    }
4

1 に答える 1

3

viewDidAppearの代わりにを使用してこれを実行してみてくださいviewDidLoadviewDidLoadメインビューが画面に表示される前にビデオを提示していることを考えると、ビデオを開始すると予期しない動作が発生するのは驚きではありません。ビューは実際に表示される前にロードが完了することに注意してください。

于 2012-08-05T14:29:28.013 に答える