2

我为今天刚刚上线的 iPad 2 信息亭开发了一个网络应用程序。几乎我们所有的客户都在使用触摸屏时遇到问题。他们正在敲击按钮,而应用程序没有记录触摸。

我从没想过用户与触摸屏交互会有这么大的困难。我想知道作为开发人员我是否可以做些什么来使这更加用户友好。触摸和实际注册之间有一点延迟——这使得用户更难知道他们按下了按钮。

我可以肯定地说,这些按钮很大——实际上可能比 iOS 指南中的要大(这又是一个 Web 应用程序——它不是用 Objective-C 编写的,而是用 PHP 和 jQuery 编写的)。所有操作都发生在 Web 应用程序中 - 使用简单的 UIWebView iOS 应用程序访问该应用程序,该应用程序只需连接到该站点。

澄清一下,有2个问题:

  1. 触摸根本不注册 - 客户在沮丧中越来越努力
  2. 对于已注册的触摸事件,存在滞后

感谢下面评论中的一些建议,最终将我带到了这个链接,我能够大大提高网络应用程序的响应能力。但我知道我的代码仍然可以改进。我的应用程序在任何主干 mvc 之外使用了主干.js 和 jquery 的组合。

这是我为防止默认的 touchend 行为而更改的 jquery 事件的示例(它最初是一个单击事件)。

$('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 还没有实现它?

4

0 回答 0