2011-11-24 56 views
0

我有以下結構OrientationObserver在UIWebView的

UIViewController1 - > UIWebView的

我運行的WebView從文件,文件夾本地HTML文件。在HTML中,我有一個簡短的JavaScript片段,它通過orientationObserver檢查界面方向。

UIViewController1被鎖定到風景。

OrientationObserver總是返回「portrait」,應該返回「landscape」。我不知道是什麼導致錯誤的返回值。

什麼可能導致orientationObserver在這個星座中返回錯誤的方向?

我真的被困在這裏,我需要得到正確的方向返回。

任何幫助表示讚賞。

+0

發佈您的codeplease –

+0

我發現orientationObserver本身是一個JS中使用'math.abs(window.orientation)'的自定義函數。在移動Safari瀏覽器中,返回90,在UIWebView中返回0.我不是大型的JS大師,但是我可以看到移動Safari和UIwebView之間存在差異 – MadMaxAPP

回答

2

最後,經過四天的撞擊iMac,我找到了解決方案。

在UIWebView中沒有window.orientation可用(我想知道爲什麼!?)。如果一個JavaScript請求該值,它將得到「0」,這意味着方向是「肖像」。

如果將「方向」設置器添加到窗口,則可以解決該問題。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)req navigationType:(UIWebViewNavigationType)navigationType { 

    [webView stringByEvaluatingJavaScriptFromString:@"window.__defineGetter__('orientation', function(){return 90;});"]; 

return YES; 
} 

這實現內window一個getter和JavaScript得到的返回值。如果您希望應用程序響應界面方向更改,則可以將代表中的值再次設置爲正確的值(-90,0,90或180)。