在UIWebView中的MPMoviePlayerController全屏电影

时间:2010-04-27 03:55:15

标签: iphone uiwebview mpmovieplayercontroller

我遇到了UIWebView和MPMoviePlayerController的问题: 我的UIWebView在html中有一部电影(它是一个本地的html文件),我正在使用html5和视频的视频标签。 问题是:用户可以将视频设置为内嵌,直接在html上播放,或者他可以点击全屏按钮,但我需要知道视频是否正在全屏播放。

我尝试过使用MPMoviePlayerDidEnterFullscreenNotification但没有成功。

有人知道如何从网络视图获取此通知吗?

提前致谢

4 个答案:

答案 0 :(得分:15)

没有发送通知(也请看这篇帖子:Event on view displayed change (Youtube MPMoviePlayerViewController)),但网页视图会做一些破解:它会在根UIViewController's视图中添加一个子视图,使其全屏显示然后在那里播放电影。

让您的主要UIViewController's查看您自己的视图,并拦截-didAddSubview:-willRemoveSubview:。通过这种方式,您将能够检测到播放器何时全屏显示。

答案 1 :(得分:4)

您还可以标记主视图并扩展UIView(或者在您拥有主视图的情况下实现以下方法):

@implementation UIView (UIViewExtended)
- (void)didAddSubview:(UIView *)subview {
   if (subview.superview.tag == ... ) {
... set some flag here or do some action
   }
}

- (void)willRemoveSubview:(UIView *)subview {
   if (subview.superview.tag == ... ) {
... set some flag here or do some action
   }
}
@end

答案 2 :(得分:2)

如果您使用HTML在Web视图中嵌入电影,则需要使用Javascript而不是MPMoviePlayer类来处理电影。

查看Apple的Quicktime脚本指南here

我认为您需要的属性是GetRectangle(),它会在嵌入区域内返回电影的位置和尺寸字符串。

获得尺寸后,您可以将其从Javascript传回Objective-C。

答案 3 :(得分:0)

来自Apple's documentation

  

全屏事件和属性

     

当元素进入或退出全屏模式时,Safari会发出webkitfullscreenchange事件。听取此事件以检测更改。

     

您可以测试document.webkitIsFullScreen属性,以查看Safari是否最近进入或退出全屏模式。在全屏模式下,该属性为true。

     

document.webkitCurrentFullScreenElement属性包含处于全屏模式的元素。如果您有多个可以处于全屏模式的元素,请使用此属性。

不幸的是,这些似乎不适用于iOS。 Apple需要改变它。