【问题标题】:Detect orientation change before event firing with phonegap在使用 phonegap 触发事件之前检测方向变化
【发布时间】:2013-06-30 03:01:39
【问题描述】:

我正在使用 PhoneGap 开发适用于 Android、iOS 和 Windows Phone 的应用程序。 我有一个带有图表的页面,如果用户横向旋转设备,我想全屏显示它。

问题是整个应用程序必须在纵向时被阻止,因此横向必须仅在此图形页面上可用。

我有两种可能:


1) 在整个应用程序中授权纵向/横向。 如果用户在图形以外的任何其他页面上,并且如果他将设备置于横向,则取消旋转并保持纵向模式。

我想我必须有办法在这些事件之前捕捉到一个事件:

window.addEventListener("orientationchange", orientationChange, false);
window.addEventListener("resize", resize, false);

2) 纵向阻止整个应用程序。 如果用户在图表页面,添加一个按钮,允许横向旋转页面以显示图表,然后返回纵向模式。

我发现了这个,但只对 Android 有用:set screen orientation


那么,有没有办法实现这些可能性之一?

谢谢

【问题讨论】:

  • 你找到解决办法了吗??
  • 否 :/ 我继续前进。但如果您有任何建议,我仍然很感兴趣
  • 你试过下面的答案了吗?
  • 不,我现在没有时间,但我会试试看。谢谢

标签: javascript android jquery ios cordova


【解决方案1】:
window
    .matchMedia('(orientation: portrait)')
    .addListener(function (m) {
        console.log('a');
    });

window.addEventListener('resize', function () {
    console.log('b');
});

window.addEventListener('orientationchange', function () {
    console.log('c');
});

// https://github.com/gajus/orientationchangeend
viewport.on('orientationchangeend', function () {
    console.log('c');
});

这些事件将按字母顺序触发。

【讨论】:

    【解决方案2】:

    iOS 解决方案:

    在你的 javascript 文件中输入这个函数

    function shouldRotateToOrientation (rotation) {
    switch (rotation) {
            case 0:     
              if(condition){
                 return true;
              }else{
                 return false;}
            case 90:
              return false;
            case -90:
              return false;
            case 180:
              return false;
        }
    }
    

    此函数覆盖cordova lib中的内置函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-19
      • 2021-04-06
      • 2013-08-15
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多