【发布时间】:2012-08-14 01:38:12
【问题描述】:
我的目标是使用 Titanium 的 Android。如何判断设备是否有触摸屏?
【问题讨论】:
标签: javascript android titanium appcelerator-mobile
我的目标是使用 Titanium 的 Android。如何判断设备是否有触摸屏?
【问题讨论】:
标签: javascript android titanium appcelerator-mobile
最简单的方法是测试触摸事件支持。如果它们受支持,则设备可能具有触摸屏。如果没有,它可能不会,或者你无论如何都不能使用它们。一种解决方案是:
var touchSupported = ('ontouchstart' in window);
但要小心,因为浏览器可能支持触摸事件但设备可能不支持(例如,Chrome 20 在没有触摸的设备中支持大量触摸事件)。
您可以让用户点击一个按钮,看看是触发了触摸事件还是只是点击了一次。
【讨论】:
这是我想出的解决方案。这真的很愚蠢,但它确实有效。无论您在何处创建应用程序窗口,都添加以下代码:
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);
【讨论】: