15

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

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

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

提前致谢

4

4 回答 4

15

没有发送通知(另见这篇文章:视图显示更改事件(Youtube MPMoviePlayerViewController)),但网络视图会做一些骇人听闻的事情:它将向根视图添加一个子UIViewController's视图,使其全屏并播放电影那里。

使您的主UIViewController's视图成为您自己的视图,并截取-didAddSubview:-willRemoveSubview:. 通过这种方式,您将能够检测到播放器何时被全屏显示。

于 2010-10-04T16:26:06.023 回答
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
于 2010-11-04T13:20:36.790 回答
2

如果您使用 HTML 将电影嵌入到 Web 视图中,那么您需要使用 Javascript 而不是 MPMoviePlayer 类来处理您的电影。

在此处查看 Apple 的 Quicktime 脚本指南。

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

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

于 2010-04-27T15:22:58.480 回答
0

来自苹果的文档

全屏事件和属性

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

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

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

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

于 2012-01-06T19:45:36.217 回答