我遇到了UIWebView和MPMoviePlayerController的问题: 我的UIWebView在html中有一部电影(它是一个本地的html文件),我正在使用html5和视频的视频标签。 问题是:用户可以将视频设置为内嵌,直接在html上播放,或者他可以点击全屏按钮,但我需要知道视频是否正在全屏播放。
我尝试过使用MPMoviePlayerDidEnterFullscreenNotification但没有成功。
有人知道如何从网络视图获取此通知吗?
提前致谢
答案 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)
全屏事件和属性
当元素进入或退出全屏模式时,Safari会发出webkitfullscreenchange事件。听取此事件以检测更改。
您可以测试document.webkitIsFullScreen属性,以查看Safari是否最近进入或退出全屏模式。在全屏模式下,该属性为true。
document.webkitCurrentFullScreenElement属性包含处于全屏模式的元素。如果您有多个可以处于全屏模式的元素,请使用此属性。
不幸的是,这些似乎不适用于iOS。 Apple需要改变它。