4

向きの変化を検出し、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 環境についての理解は非常に限られていることに注意してください。

4

2 に答える 2

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

タイムアウトで問題が解決するはずです。

于 2013-01-15T08:26:09.140 に答える
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"); 
  }
});
于 2014-04-16T08:17:26.143 に答える