Iphone MPMoviePlayerController仅在通用应用程序中抛出错误
当应用程序启动时,我的应用程序以全屏模式播放视频。从3.0到4.1,一切都完美无瑕 然而,如果我为通用应用程序编译相同的代码,它将在iPad上工作,但在iPhone(模拟器)上不再工作 有人解决了这个问题吗 代码如下: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:@
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];
}