Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone MPMoviePlayerController仅在通用应用程序中抛出错误_Iphone_Ipad_Ios_Mpmovieplayercontroller_Universal - Fatal编程技术网

Iphone MPMoviePlayerController仅在通用应用程序中抛出错误

Iphone MPMoviePlayerController仅在通用应用程序中抛出错误,iphone,ipad,ios,mpmovieplayercontroller,universal,Iphone,Ipad,Ios,Mpmovieplayercontroller,Universal,当应用程序启动时,我的应用程序以全屏模式播放视频。从3.0到4.1,一切都完美无瑕 然而,如果我为通用应用程序编译相同的代码,它将在iPad上工作,但在iPhone(模拟器)上不再工作 有人解决了这个问题吗 代码如下: if ([self respondsToSelector:@selector(presentMoviePlayerViewControllerAnimated:)]) { videoPath = [[NSBundle mainBundle] pathForResource:@

当应用程序启动时,我的应用程序以全屏模式播放视频。从3.0到4.1,一切都完美无瑕

然而,如果我为通用应用程序编译相同的代码,它将在iPad上工作,但在iPhone(模拟器)上不再工作

有人解决了这个问题吗

代码如下:

if ([self respondsToSelector:@selector(presentMoviePlayerViewControllerAnimated:)]) {
  videoPath = [[NSBundle mainBundle] pathForResource:@"portrait" ofType:@"mov"];
  videoURL = [NSURL fileURLWithPath:videoPath];

  MPMoviePlayerController *aMoviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];
  self.moviePlayerController = aMoviePlayerController;
  [aMoviePlayerController release];  

  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(startVideo:) name:MPMoviePlayerLoadStateDidChangeNotification object:nil];
  [moviePlayerController.view setFrame:self.view.bounds];
  [self.view addSubview:moviePlayerController.view];

  moviePlayerController.controlStyle = MPMovieControlStyleNone;
 } else {
  //OS < 3.2
  videoPath = [[NSBundle mainBundle] pathForResource:@"landscape" ofType:@"mov"];
  videoURL = [NSURL fileURLWithPath:videoPath];

  MPMoviePlayerController *aMoviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];
  self.moviePlayerController = aMoviePlayerController;
  [aMoviePlayerController release];

  moviePlayerController.movieControlMode = MPMovieControlModeHidden;
  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(startVideo:) name:MPMoviePlayerContentPreloadDidFinishNotification object:nil];
 }

…错误仍然被抛出。

我还没有解释错误的原因。但这似乎可行(需要在旧设备上测试):

if([self respondsToSelector:@selector(presentmovieplayervicewcontrolleranimated:)){
videoPath=[[NSBundle mainBundle]pathForResource:@“肖像”类型:@“mov”];
videoURL=[NSURL fileURLWithPath:videoPath];
/*新的*/
MPMoviePlayerViewController*aMoviePlayerViewController=[[MPMoviePlayerViewController alloc]initWithContentURL:videoURL];
amovieplayervewcontroller.moviePlayer.view.frame=self.view.bounds;
amovieplayervewcontroller.moviePlayer.controlStyle=MPMovieControlStyleNone;
[[NSNotificationCenter defaultCenter]添加观察者:自选择器:@selector(startVideo:)名称:MPMoviePlayerLoadStateDidChangeNotification对象:nil];
[amovieplayervewcontroller.moviePlayer play];
[self.view addSubview:amovieplayervewcontroller.view];
self.moviePlayerController=amovieplayervewcontroller;
}否则{
//OS<3.2
videoPath=[[NSBundle mainBundle]pathForResource:@“横向”类型:@“mov”];
videoURL=[NSURL fileURLWithPath:videoPath];
MPMoviePlayerController*aMoviePlayerController=[[MPMoviePlayerController alloc]initWithContentURL:videoURL];
self.moviePlayerController=aMoviePlayerController;
aMoviePlayerController.movieControlMode=MPMovieControlModeHidden;
[[NSNotificationCenter defaultCenter]添加观察者:自选择器:@selector(startVideo:)名称:MPMoviePlayerContentPrelodFinishNotification对象:nil];
[aMoviePlayerController释放];
}

要是我能记得当初为什么用另一种方式做那件事就好了;)

我几天前也犯了同样的错误。它只需要将基本sdk从3.2更改为4.1
希望有帮助

是的,这就解决了问题。谢谢你,马西奥!
if ([moviePlayerController respondsToSelector:@selector(view)]) {
   [moviePlayerController.view setFrame:self.view.bounds];
  }
if ([self respondsToSelector:@selector(presentMoviePlayerViewControllerAnimated:)]) {
        videoPath = [[NSBundle mainBundle] pathForResource:@"portrait" ofType:@"mov"];
        videoURL = [NSURL fileURLWithPath:videoPath];

        /* NEW */
        MPMoviePlayerViewController *aMoviePlayerViewController = [[MPMoviePlayerViewController alloc] initWithContentURL:videoURL];
        aMoviePlayerViewController.moviePlayer.view.frame = self.view.bounds;
        aMoviePlayerViewController.moviePlayer.controlStyle = MPMovieControlStyleNone;
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(startVideo:) name:MPMoviePlayerLoadStateDidChangeNotification object:nil];
        [aMoviePlayerViewController.moviePlayer play];
        [self.view addSubview:aMoviePlayerViewController.view];
        self.moviePlayerController = aMoviePlayerViewController;


    } else {
        //OS < 3.2
        videoPath = [[NSBundle mainBundle] pathForResource:@"landscape" ofType:@"mov"];
        videoURL = [NSURL fileURLWithPath:videoPath];

        MPMoviePlayerController *aMoviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];
        self.moviePlayerController = aMoviePlayerController;

        aMoviePlayerController.movieControlMode = MPMovieControlModeHidden;
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(startVideo:) name:MPMoviePlayerContentPreloadDidFinishNotification object:nil];

        [aMoviePlayerController release];
    }