在使用 phonegap 触发事件之前检测方向变化
Posted
技术标签:
【中文标题】在使用 phonegap 触发事件之前检测方向变化【英文标题】:Detect orientation change before event firing with 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
那么,有没有办法实现这些可能性之一?
谢谢
【问题讨论】:
你找到解决办法了吗?? 否 :/ 我继续前进。但如果您有任何建议,我仍然很感兴趣 你试过下面的答案了吗? 不,我现在没有时间,但我会试试看。谢谢 【参考方案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中的内置函数。
【讨论】:
以上是关于在使用 phonegap 触发事件之前检测方向变化的主要内容,如果未能解决你的问题,请参考以下文章
UIScrollView - 检测layoutSubviews中的滚动与方向变化?
Xcode 中的 phoneGap 不会触发 Deviceready 事件
Ext.device.connection 不使用phonegap构建触发onlInechange事件