Javascript Phonegap 2.2.0-检测方向
我有一个应用程序,我想保持在纵向模式,除了一个单一的视图,我想检测方向的变化,激发一个js事件,并改变方向(仅适用于该视图) 我的应用程序中有以下代码:Javascript Phonegap 2.2.0-检测方向,javascript,ios,cordova,Javascript,Ios,Cordova,我有一个应用程序,我想保持在纵向模式,除了一个单一的视图,我想检测方向的变化,激发一个js事件,并改变方向(仅适用于该视图) 我的应用程序中有以下代码: window.shouldRotateToOrientation = function(rotation) { switch (rotation) { case 0: case 180: console.log("Portrait"); return f
window.shouldRotateToOrientation = function(rotation) {
switch (rotation) {
case 0:
case 180:
console.log("Portrait");
return false;
//LandscapeRight or LandscapeLeft
case 90:
case -90:
console.log("Landscape");
return false;
}
}
当为iOS5构建时,这似乎可以正常工作,通过返回false保持应用程序处于纵向,并在设备处于横向模式时正确启动。但是,当为iOS6构建时,每次旋转设备时,该函数都会被调用4次,与每种情况相匹配,从而导致检测无效
我是否正确地处理了这个问题——是否有其他方法,或者是否有我遗漏的东西
请注意,我对XCode/ios/ObjectiveC环境的理解非常有限请尝试以下代码:
function changeOrientation() {
switch (window.orientation) {
case 0:
// portrait, home bottom
case 180:
// portrait, home top
alert("portrait H: " + $(window).height() + " W: " + $(window).width());
break;
case -90:
// landscape, home left
case 90:
// landscape, home right
alert("landscape H: " + $(window).height() + " W: " + $(window).width());
break;
}
}
window.onorientationchange = function () {
//Need at least 800 milliseconds
setTimeout(changeOrientation, 1000);
}
超时应该可以解决问题。以下方法可以检测方向:
function isOrientationPortrait(){
if ($(window).height() > $(window).width()){
return true;
} else {
return false;
}
}
$(window).on('orientationchange', function () {
if(isOrientationPortrait()){
console.log("Portrait");
} else {
console.log("Landscape");
}
});
您使用的是哪个版本的phonegap?您找到解决方案了吗?我们最终锁定了应用程序的方向,并通过加速计检测方向变化