iPad 2 キオスク用の Web アプリを開発し、今日公開しました。ほとんどすべてのお客様が、タッチスクリーンの使用に問題を抱えています。彼らはボタンを叩いていて、アプリはタッチを登録していません。
ユーザーがタッチスクリーンを操作するのがこれほど難しいとは思いもしませんでした。これをもっと使いやすくするために、開発者として何かできることはないかと考えています。タッチしてから実際に登録されるまでにはわずかなタイムラグがあります。これにより、ユーザーがボタンを押したことを認識するのがはるかに難しくなります。
ボタンはかなり大きいと言えます。実際、おそらく iOS のガイドラインよりも大きいでしょう (これも Web アプリです。Objective-C ではなく、PHP と jQuery で記述されています)。すべてのアクションは、サイトに接続するだけのシンプルな UIWebView iOS アプリを使用してアクセスされる Web アプリで行われます。
明確にするために、2 つの問題があります。
- タッチがまったく登録されない - クライアントは欲求不満で次第に強く押す
- 登録されているタッチイベントにはラグがあります
以下のコメントのいくつかの提案のおかげで、最終的にこのリンクにたどり着き、Web アプリの応答性を大幅に改善することができました。しかし、私のコードはまだ改善される可能性があることを知っています。私のアプリは、バックボーン mvc の外部で backbone.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を解決して、はるかに高速です。
私はこれを正しく実装したとは確信していません。1 つの大きな欠点は、非タッチ デバイスでテストを行ったときに、Java スクリプトからすべてのクリック イベントを削除したため、イベントが登録されないことです。デフォルトのタッチエンドをブロックするだけでなく、複数のイベントを確認する必要がありますか? 私が行った調査に基づいて、これに対する明確な解決策はありません.jqueryモバイルはまだイベントを実装していませんか?