2011-11-24 29 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)。