我在iOS4中遇到这个奇怪的问题,当用户在屏幕上执行某种手势时,在MPMoviePlayerController
中播放的视频中会出现黑屏。我只是为UIViewController
创建MPMoviePlayerController
和对象,然后将视图设置为UIViewController
。
我想问一下这个问题是否可以解决,以及在iPhone上播放流媒体视频的正确方法。
如果有办法我可以使用MPMoviePlayerController
上方的叠加视图捕获所有手势并将单击或触摸传递到MPMoviePlayerController
以获取MPMoviePlayerController
的一般功能并避免手势这导致了这个问题。
请帮我解决最佳解决方案的问题,请帮助我详细说明解决方案。
答案 0 :(得分:9)
Apple在UIPinchGestureRecognizer
中嵌入了MPMoviePlayerViewController
,但在UIResponder.gestures
属性中找不到它。
您可以停用UIPinchGestureRecognizer
touchesBegan
方法中嵌入的MPMoviePlayerViewController
。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
for (UITouch *touch in touches) {
NSArray *array = touch.gestureRecognizers;
for (UIGestureRecognizer *gesture in array) {
if (gesture.enabled && [gesture isMemberOfClass:[UIPinchGestureRecognizer class]]) {
gesture.enabled = NO;
}
}
}
}
答案 1 :(得分:2)
我有类似的问题,我刚从Apple的文档中找到了我的问题的原因:
将电影播放器的视图添加到应用的视图层次结构时,请务必正确调整帧的大小,如下所示:
...
[player.view setFrame:myView.bounds]; //玩家的框架必须与父母的
匹配...
现在我的捏不会崩溃我的应用程序。
答案 2 :(得分:0)
我讨厌这个问题。我能够找到的是,全屏模式需要嵌入控制,以便NSNotificationCenter
能够使用正确的Notification
进行响应。听起来很愚蠢和荒谬,但这是我在4.0中找到的。
答案 3 :(得分:0)
我看到了这个问题并找到了一个简单的解决方法。
由于我们不想使用MPMoviePlayerViewController
(我们在视频未全屏并且希望保持平滑过渡时有一些自定义控件),因此无法使用上述手势挖掘技巧。
症状(iOS 5.1):
MPMoviePlayerController
,不泄漏任何内容。这没有用。解决方法:强>
当关闭其中包含MPMoviePlayerController
视图的视图时,我们会在播放器上设置contentURL = nil
。
之后我们在后续的MPMoviePlayerController
个实例中出现黑屏问题。
似乎在使用“完成”按钮时会执行一些内部清理,但在捏合全屏时则不会执行。