我有一个应用程序,我想保持纵向模式,除了我想要检测方向更改的单个视图,触发js事件并更改方向(仅适用于该视图)。
我的应用中有以下代码:
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环境的理解非常有限
答案 0 :(得分:2)
试试这段代码:
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);
}
超时应解决问题。
答案 1 :(得分:0)
以下是检测方向的原因:
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");
}
});