如何检测设备是否在Titanium中有触摸屏?
答
这是我想出的解决方案。这真的很愚蠢,但它有效。无论你创建你的应用程序窗口,添加以下代码:
function touchStart(){
Titanium.App.Properties.setBool("touch", true);
self.removeEventListener("touchstart", touchStart);
}
self.addEventListener("touchstart", touchStart);
替换self
与你的窗口的名称。现在,第一次检测到触摸事件时,应用程序属性将被设置。
后来,检查存在触摸本:
var touchSupported = Titanium.App.Properties.getBool("touch", false);
如果你是在模拟器上测试这一点,当你改变“设备”属性可能会持续甚至。所以添加此行之前的任何其他:
Titanium.App.Properties.setBool("touch", false);
答
最简单的方法是测试触摸事件支持。如果它们得到支持,那么该设备可能具有触摸屏。如果没有,它可能不会或者你无法使用它们。一个解决方案是:
var touchSupported = ('ontouchstart' in window);
但要小心,因为浏览器可以支持触摸事件,但该设备可能不会(例如Chrome浏览器20支持大量的触摸事件的设备没有触摸)。
您或许可以让用户点击一个按钮并查看触发事件是发送还是点击。
不幸的是,这并没有奏效。我应该提到Titanium不使用“标准”事件名称。无论如何,谢谢你。 – 2012-08-14 16:08:12
“让用户点击按钮”的想法如何? – RobG 2012-08-15 03:25:57
我确实考虑过这个问题,但我找到了一种透明地做到这一点的方法(我的回答)。 – 2012-08-15 15:10:31