首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MPMoviePlayerController在iOS4中不起作用

MPMoviePlayerController在iOS4中不起作用
EN

Stack Overflow用户
提问于 2010-07-14 23:28:38
回答 2查看 7.4K关注 0票数 1

我使用的是来自iOS 4 + MPMoviePlayerController的第一个答案

试着让MPMoviePlayerController上场。在模拟器(带iOS4的iPhone设备)中,我听到声音,但听不到视频。在设备(iPhone 3GS和iOS4)上,我什么也看不到。下面是我的代码:

代码语言:javascript
复制
    MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:moviePath]];
    moviePlayer.movieControlMode = MPMovieControlModeDefault;

    if ([moviePlayer respondsToSelector:@selector(view)]) {
        moviePlayer.controlStyle = MPMovieControlStyleFullscreen;
        [moviePlayer.view setFrame:self.view.bounds];
        [self.view addSubview:moviePlayer.view];
    }

    [moviePlayer play];

你知道我做错了什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-15 04:39:23

我刚刚在iOS4 + iPhone 4(和一个3GS)-it上测试了以下代码。乍一看,我认为代码的问题在于没有在MPMoviePlayerController实例上调用setFullscreen:animated

代码语言:javascript
复制
- (void)willEnterFullscreen:(NSNotification*)notification {
    NSLog(@"willEnterFullscreen");
}

- (void)enteredFullscreen:(NSNotification*)notification {
    NSLog(@"enteredFullscreen");
}

- (void)willExitFullscreen:(NSNotification*)notification {
    NSLog(@"willExitFullscreen");
}

- (void)exitedFullscreen:(NSNotification*)notification {
    NSLog(@"exitedFullscreen");
    [self.movieController.view removeFromSuperview];
    self.movieController = nil;
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

- (void)playbackFinished:(NSNotification*)notification {
    NSNumber* reason = [[notification userInfo] objectForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey];
    switch ([reason intValue]) {
        case MPMovieFinishReasonPlaybackEnded:
            NSLog(@"playbackFinished. Reason: Playback Ended");         
            break;
        case MPMovieFinishReasonPlaybackError:
            NSLog(@"playbackFinished. Reason: Playback Error");
            break;
            case MPMovieFinishReasonUserExited:
            NSLog(@"playbackFinished. Reason: User Exited");
            break;
        default:
            break;
    }
    [self.movieController setFullscreen:NO animated:YES];
}

- (void)showMovie {
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterFullscreen:) name:MPMoviePlayerWillEnterFullscreenNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willExitFullscreen:) name:MPMoviePlayerWillExitFullscreenNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(enteredFullscreen:) name:MPMoviePlayerDidEnterFullscreenNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(exitedFullscreen:) name:MPMoviePlayerDidExitFullscreenNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackFinished:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];

    NSURL* movieURL =  [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"tron" ofType:@"mov"]];
    self.movieController = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];
    if ([self.movieController respondsToSelector:@selector(view)]) {
        self.movieController.view.frame = self.view.frame;
        [self.view addSubview:movieController.view];
        [self.movieController setFullscreen:YES animated:YES];
    }
    [self.movieController play];
}

// This method is set as the action for an on-screen button
- (void)movieTime:(id)sender {
    [self showMovie];
}
票数 9
EN

Stack Overflow用户

发布于 2010-07-15 03:53:21

对于动态来说,view是一个属性,而不是一个方法,所以如果它没有为它合成或编写方法(即声明为@ MPMoviePlayerController ),就不能对它使用respondsToSelector:。我认为这对于UIKit中的大多数只读属性都是正确的。

票数 -4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3247735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档