在 UIPopoverController 中使用 UIImagePickerController 后播放视频消失

Posted

技术标签:

【中文标题】在 UIPopoverController 中使用 UIImagePickerController 后播放视频消失【英文标题】:Video disappearing when played after using UIImagePickerController in a UIPopoverController 【发布时间】:2011-03-10 18:18:06 【问题描述】:

当 UIImagePickerController 出现在 UIPopoverController 中时,从 UIImagePickerController 中选择任何内容后,我播放视频最困难。

这是展示视频的代码:

-(void) presentMovie



NSString *filePath = [[NSBundle mainBundle] pathForResource:@"demo" ofType:@"mov"];

NSURL *movieURL = [NSURL URLWithString:filePath];

[[mp moviePlayer] setContentURL:movieURL];
[[mp moviePlayer] prepareToPlay];

[[mp moviePlayer] setShouldAutoplay:NO];

[[mp moviePlayer] setControlStyle:MPMovieControlStyleEmbedded];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(videoPlayBackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
[[mp moviePlayer] setAllowsAirPlay:YES];


[[mp view] setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight];
[screen addSubview:mp.view];
[[mp view] setFrame:screen.bounds];

mp 是在我的 viewDidLoad 中分配和初始化的 MPMoviePlayerViewController ivar

[self presentMovie] 可以完美运行,除非它是从 -imagePickerController:didFinishPickingMediaWithInfo: 方法中调用的

当从该委托方法调用时,由 MPMoviePlayerVideoController 显示的视频会在播放后立即消失。如果“shouldAutoPlay”属性设置为“是”,我只会看到加载一瞬间,然后是黑色。如果 'shouldAutoPlay' 属性设置为 NO,那么我会看到视频的第一帧,我可以将视频拖到视频中的不同位置,将视频移入和移出全屏等,但只要我点击播放,视频所在的视图变黑。如果我尝试播放的视频来自 UIImagePickerController 选择或来自 mainBundle,则这是正确的。一旦 UIImagePicker 被选中,视频将不会播放。

我已经完成了几个调试步骤,只有当 UIImagePickerControll 位于 iPad 上的 UIPopoverController 中时,UIImagePickerControll 才出现在 iPhone 上的模态视图中。

有什么想法吗?还有其他人能够在 iPad 上成功播放从 UIImagePickerController 中选择的视频吗?

【问题讨论】:

您可能想要移动行 [[mp moviePlayer] setContentURL:movieURL];和 [[mp moviePlayer] prepareToPlay];一直到该方法的底部。 【参考方案1】:

原来答案是使用 ALAsssetsLibrary “自己动手”。 UIImagePickerContorller 不适用于 iPad 上的视频,创建自己的自定义选取器并不难。有来自 WWDC 2010 的示例代码以及来自 GitHub 上的 Mat Tuzzolo 的代码 https://github.com/elc/ELCImagePickerController

【讨论】:

【参考方案2】:

我遇到了这个问题,从 UIImagePickerController 中选择视频后无法播放,但我没有完全释放弹出框。当我正确释放它时,它工作正常。

感谢谨慎@UIImagePickerController choosing video prevents MPMoviePlayerViewController instance from working

【讨论】:

以上是关于在 UIPopoverController 中使用 UIImagePickerController 后播放视频消失的主要内容,如果未能解决你的问题,请参考以下文章

UIPopoverController的使用

UIPopoverController 内的移动框架

UIPopoverController、Xcode 6、IOS 8 使用 Swift

UIPopoverController 奇怪的行为

如何使用 iOS 状态恢复来恢复 UIPopoverController?

无法在 UIPopoverController 中显示视图控制器