我为今天上线的iPad 2信息亭开发了一个网络应用程序。几乎所有客户都在使用触摸屏时遇到问题。他们正在敲击按钮,应用程序没有注册触摸。
我从未想过用户与触摸屏进行交互会有太多困难。我想知道作为开发人员我能做些什么来使这个用户更友好。触摸与实际注册之间存在轻微的延迟 - 这使得用户更难以知道他们已按下按钮。
我可以肯定地说,按钮非常大 - 实际上可能比iOS指南要大(再次这是一个Web应用程序 - 它不是用Objective-C编写的,而是用PHP和jQuery编写的)。所有操作都在Web应用程序中进行 - 可以使用简单的UIWebView iOS应用程序访问,该应用程序只需连接到站点。
澄清一下,有两个问题:
感谢下面评论中的一些建议,这最终促成了我link,我能够大大提高网络应用的响应能力。但我知道我的代码仍然可以改进。我的应用程序在任何主干mvc之外使用backbone.js和jquery的组合。
以下是我更改的jquery事件示例,以防止默认的touchend行为(它最初是一个click事件)。
$('body').on( 'touchend', '#s-id', function(event) {
event.preventDefault();
$('form[name=client-login]').submit();
});
骨干视图的一个示例,它最初也使用了点击事件
var CounterView = Backbone.View.extend({
el: "body",
events: {
"touchend #b-q-prev": "qPrev",
"touchend #b-q-next": "qNext"
},
qNext: function(e){
e.preventDefault();
this.model.qIncrease();
this.qShow();
},
qPrev: function(e){
e.preventDefault();
this.model.qDecrease();
this.qShow();
},...etc...
实现这些技术解决了我的问题,因为应用程序基本上不关心您在最初触摸按钮后所执行的操作,一旦释放它,则认为按下了您触摸的原始按钮。这允许我的客户使用随意点击来触发事件。它也更快,解决问题2.
我不确定我是否已正确实施此功能。现在的一个主要缺点是,当我使用非触摸设备进行测试时,没有事件注册,因为我从java脚本中删除了所有点击事件。我应该查看多个事件,而不仅仅是阻止默认触摸结束吗?基于我所做的研究,没有明确的解决方案 - 因为jquery mobile尚未实现事件吗?