在MPMoviePlayerController上执行Pinch Gesture时屏幕停电

时间:2010-08-18 10:57:05

标签: ios mpmovieplayercontroller

我在iOS4中遇到这个奇怪的问题,当用户在屏幕上执行某种手势时,在MPMoviePlayerController中播放的视频中会出现黑屏。我只是为UIViewController创建MPMoviePlayerController和对象,然后将视图设置为UIViewController

我想问一下这个问题是否可以解决,以及在iPhone上播放流媒体视频的正确方法。

如果有办法我可以使用MPMoviePlayerController上方的叠加视图捕获所有手势并将单击或触摸传递到MPMoviePlayerController以获取MPMoviePlayerController的一般功能并避免手势这导致了这个问题。

请帮我解决最佳解决方案的问题,请帮助我详细说明解决方案。

4 个答案:

答案 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):

  • 当用户以全屏方式重复打开视频时,将其全屏缩回,然后对新视频执行相同操作,第5次视频启动并进入全屏时,屏幕将变黑。
  • 当屏幕变黑时,可以通过单击来隐藏和显示状态栏,但不会显示视频或导航栏。
  • 全屏使用“完成”按钮而不是捏合,可以毫无问题地关闭全屏。
  • 我们为每个视频分配一个新的MPMoviePlayerController,不泄漏任何内容。这没有用。

解决方法:

当关闭其中包含MPMoviePlayerController视图的视图时,我们会在播放器上设置contentURL = nil

之后我们在后续的MPMoviePlayerController个实例中出现黑屏问题。

似乎在使用“完成”按钮时会执行一些内部清理,但在捏合全屏时则不会执行。