2012-04-13 92 views
2

我遇到了一個奇怪的問題,我需要幫助解決。我的應用程序總是以縱向模式運行 - 我明確希望它是這種方式。在應用程序的一個地方,我有一個UIWebView,正如預期的那樣工作得很好。這個Web視圖並不是一直顯示,而是動態地添加到主視圖中,並根據用戶操作(即只在需要時纔可見)刪除。iPhone旋轉和全屏視頻

現在,有時在這個視圖中我可能會有一個YouTube視頻。 WebView僅包含用於嵌入YouTube的。當用戶點擊web視圖中的視頻預覽幀時,會啓動全屏視頻查看器來播放視頻 - 這很好。

但是,如果在回放過程中用戶旋轉手機,則全屏視頻播放器將旋轉,並且視頻以橫向模式播放。現在視頻停止了,用戶按下「完成」按鈕,不用將手機旋轉回肖像模式,視頻播放器關閉,用戶返回到我的應用程序 - 但現在我的佈局也旋轉了!不只是視頻視圖,而是整個佈局 - 帶有工具欄,導航控制器等。

我不想要任何旋轉!我只想讓我的應用程序中的所有內容都保持縱向模式!此外,現在即使手機旋轉回肖像,應用程序仍處於橫向模式。

請注意,我只在模擬器中測試過,因爲我目前沒有物理電話來測試。我創建了一個簡單的(質量差的!)視頻(只是用舊手機攝像頭在屏幕上拍攝模擬器)來演示問題 - 視頻在這裏:http://shchuka.com/hosting/rotation_problem.mp4

任何想法我可以做些什麼?

回答

0

添加這,或改變它:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 

    return (UIInterfaceOrientation == UIInterfaceOrientationPortrait); 

} 

這將阻止所有旋轉和應用程序將僅在縱向模式下工作。您可以將return陳述放置在IF語句中以允許在某些情況下進行輪換。

+0

試過這個 - 但該方法甚至沒有被調用。我錯過了什麼嗎? – 2012-04-13 17:13:15

+0

@AleksG你把這個方法放在UIViewController中嗎? – 2012-04-13 17:17:16

+0

是的,我將該方法放入我的UIViewController(也就是從它延伸的類)的實現'.m'文件中。我認爲這可能與我的應用在輪換髮生時未處於活動狀態有關。相反,全屏視頻播放器處於活動狀態。 – 2012-04-13 17:19:50

0

我有時會在appDelegate窗口中添加視圖,當我希望它們超出其他所有內容時,並且惱人​​的副作用是我必須明確地調用我自己的旋轉代碼,因爲沒有VC可以處理它。從積極的一面,這可能意味着它可以爲您的需要是理想的 -

[[[[UIApplication sharedApplication] delegate] window] addSubview:myWebView]; 

...這取決於你的應用程序的方向,等等,你首先加載視圖之前,您可能需要旋轉顯示它之前的webView。