2010-04-27 98 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。蘋果公司需要改變這一點。

相關問題