Phonegap 2.2.0 – Detección de orientación

Tengo una aplicación que me gustaría mantener en modo vertical, excepto una vista única en la que quiero detectar un cambio de orientación, disparar un evento js y cambiar la orientación (solo para esa vista).

Tengo el siguiente código en mi aplicación:

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; } } 

Esto parece funcionar bien cuando se crea para iOS5, manteniendo la aplicación en orientación vertical devolviendo falso y disparando correctamente cuando el dispositivo está en modo horizontal. Sin embargo, cuando se crea para iOS6, la function se llama 4 veces cada vez que el dispositivo se gira, y se hace corresponder con cada caso, haciendo que la detección sea inútil.

¿Me estoy acercando a esto correctamente? ¿Hay otro path o hay algo que me falta?

Tenga en count que tengo una comprensión muy limitada del entorno XCode / ios / ObjectiveC

testing este código:

 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); } 

El time de espera debe solucionar el problema.

Lo siguiente me funciona para detectar la orientación:

 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"); } });