任何人都可以帮助我在iphone中通过uiwebview访问时如何处理javascript中的方向更改事件?
我正在尝试捕获javascript的onorientationchange
事件。我尝试了以下代码。
<style type="text/css" media="only screen and (max-device-width: 480px)">
.portrait
{
width: 300px;
padding: 0 15px 0 5px;
}
.landscape
{
width: 460px;
padding: 0 15px 0 5px;
}
</style>
<script type="text/javascript">
window.onload = orientationchange;
window.onorientationchange = orientationchange;
function orientationchange() {
if (window.orientation == 90
|| window.orientation == -90) {
document.getElementById('contents').className = 'landscape';
}
else {
document.getElementById('contents').className = 'portrait';
}
}
</script>
// and I have a div inside html
<div id="contents">
my contents and description... e.t.c, and e.t.c...
</div>
它在safari中工作正常但是当我使用uiwebview访问页面时,没有捕获方向更改事件,并且无法实现我想要的功能。
答案 0 :(得分:4)
我想指出this post: "iphone-uiwebview-local-resources-using-javascript-and-handling-onorientationchang",接受答案正下方的答案确实对您的问题表示敬意:处理应用程序代码中的方向更改并使用javascript注入更改。我引用希望作者不介意:
“在UIWebView中未调用onorientationchange处理程序的第二个问题的答案:
我注意到window.orientation属性无法正常工作,并且不会调用window.onorientationchange处理程序。大多数应用程序遇到此问题这可以通过设置window.orientation属性并在包含UIWebView的视图控制器的willRotateToInterfaceOrientation方法中调用window.onorientationchange来修复:“
答案 1 :(得分:1)
谢谢你。
另一种写这个的方法是:
var onorientationchange = function() {
document.getElementById('contents').className =
Math.abs(window.orientation == 90)? "landscape" : "portrait";
}
window.onload = function() {
window.onorientationchange = window.onorientationchange
}
答案 2 :(得分:1)
将其放入viewDidLoad
:
[[UIDevice currentDevice]beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(hasOrientationChanged:) name:@"UIDeviceOrientationDidChangeNotification" object:nil];
- (void)hasOrientationChanged:(NSNotification *)notification {
UIDeviceOrientation currentOrientation;
currentOrientation = [[UIDevice currentDevice] orientation];
if(currentOrientation == UIDeviceOrientationLandscapeLeft){
NSLog(@"left");
}
if(currentOrientation == UIDeviceOrientationLandscapeRight){
NSLog(@"right");
}
}
现在,您可以使用正确的方向调用您的网页视图:)