2013-01-14 24 views
4

我有一個應用程序,我想保持縱向模式,除了我想檢測方向更改,激發js事件並更改方向(用於僅此視圖)。Phonegap 2.2.0 - 檢測方向

我在我的應用程序下面的代碼:

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

你使用的PhoneGap的版本? –

+0

我在PhoneGap 2.2.0 – reech

+0

你找到了解決辦法嗎? – RYFN

回答

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

超時應該解決這個問題。

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