2010-04-27 86 views
15

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

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

有没有人知道如何从webview获取此通知?

在此先感谢

+0

请参阅我的回答http://stackoverflow.com/questions/8518719/how-to-receive-nsnotifications-from-uiwebview-embedded-youtube-video-playback/8554040#8554040实际上找到一种方法来实现这一点。 – Till 2012-01-06 20:19:09

+0

这是我找到的最好的解决方案,我为我工作 http://stackoverflow.com/a/9088751/1002338 – Mona 2012-10-15 22:39:40

回答

2

如果您使用HTML中嵌入你的电影在Web视图,那么你就需要使用Javascript,而不是MPMoviePlayer类来解决你的电影。

看看Apple的Quicktime脚本指南here

我认为你需要的财产是GetRectangle()它返回一个字符串的位置和电影在嵌入区域的尺寸。

一旦你有了尺寸,你可以从Javascript传递回Objective-C。

+0

这有助于告诉矩形的大小在给定时间是什么;然而,该问题询问如何获得电影播放器​​进入全屏(或尺寸改变)的通知。 – 2010-11-30 07:22:25

15

没有通知正在发送(也看到这个帖子:Event on view displayed change (Youtube MPMoviePlayerViewController)),但是网络视图会做一些骇人的事情:它会在根UIViewController's视图中添加一个子视图,使其全屏并在那里播放电影。

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

+0

有关将子视图添加到根UIViewController视图的小小评论非常宝贵。没有它,我不知道为什么我的RootViewController的外观方法被调用,每当我离开一个完全不同的VC中托管的全屏电影播放器​​。 – Julian 2013-07-11 08:08:13

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 
+0

工程就像一个魅力! – 2012-08-28 12:45:18

+0

看起来像iOS 6中打破了。任何其他想法? – 2012-09-26 18:35:21

0

Apple's documentation

全屏事件和属性

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

您可以测试document.webkitIsFullScreen属性以查看Safari是最近进入还是退出全屏模式。该属性在全屏模式下是正确的。

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

不幸的是,这些似乎不适用于iOS。苹果公司需要改变这一点。

相关问题