2010-08-18 57 views
6

我在iOS4中遇到了这个奇怪的问题,其中在MPMoviePlayerController中播放的视频在用户在屏幕上执行某种手势时变黑。我只是简单地创建了一个UIViewController和对象MPMoviePlayerController,然后将视图设置为UIViewController在MPMoviePlayerController上执行Pinch手势时屏幕中断

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

,如果有,我可以使用一个覆盖视图在MPMoviePlayerController和捕获所有的手势和单水龙头或接触传给MPMoviePlayerControllerMPMoviePlayerController一般功能,避免引起该问题手势的方式。

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

+0

我也见过这个。我注意到它与发送的事件有关。捏的手势,就像从嵌入到全屏模式的切换,可能发送完成完成播放事件。我一直无法弄清楚为什么。 – 2010-08-20 22:15:43

回答

0

我讨厌这个问题。我所能找到的是,为了使NSNotificationCenter响应正确的Notification,全屏模式需要嵌入控制。听起来很愚蠢和荒谬,但这是我在4.0中发现的。

9

苹果嵌入UIPinchGestureRecognizerMPMoviePlayerViewController,但它不能在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; 
      } 
     } 
    } 
} 
 
0

我看到了这个问题,发现一个简单的解决方法。

由于我们不想使用MPMoviePlayerViewController(当视频不是全屏并希望保持平滑过渡时,我们有一些自定义控件),因此无法使用上述手势 - nuking技巧。

症状(的iOS 5.1):

  • 当用户重复地打开全屏视频,捏回了全屏,然后做了同样的一个新的视频屏幕会变黑第5视频开始播放并进入全屏。
  • 当屏幕变黑时,可以通过单击来隐藏和显示状态栏,但不会显示视频或导航栏。
  • 在全屏中使用“完成”按钮而不是捏,可以关闭全屏,而不会出现任何问题。
  • 我们为每个视频分配一个新的MPMoviePlayerController,不泄漏任何东西。这没有帮助。

解决方法:

当驳回其曾在它的MPMoviePlayerController鉴于我们对球员设置contentURL = nil的看法。

之后,我们在随后的MPMoviePlayerController实例上的黑屏没有问题。

看起来有一些内部清理是在使用“完成”按钮时执行的,但在捏合关闭全屏时不会执行。

2

我有一个类似的问题,我刚刚发现我的问题,从苹果的doc的原因:

当您添加的电影播放器​​的看法到应用的视图层次,一定要尺寸框架正确,如下所示:

...

[player.view SETFRAME:myView.bounds]; //玩家的框架必须父母的

...

现在我掐不崩溃我的应用程序相匹配。