1

私はJavascript Webアプリを作成していますが、一生touchstartイベントを発生させることはできません。touchmoveイベントとtouchendイベントは問題ありません。タップとスクロール モーションを区別する最善の方法は、touchstartイベントのカウンターをゼロにし、 で更新してから でtouchmove比較することであるため、これは問題touchendです。私はこれを行っているので、タップの最後に何らかのアクションを実行できますが、スクロールはできません。たとえば、リストを下にスクロールした後にリスト内のアイテムのページが開いたら非常に混乱しますが、アイテムをタップしてそのページを開くことができると便利です。

これは私が持っているものです:

// FIXME: this doesn't seem to ever fire
el.addEventListener('touchstart', function(e) {
  // make sure that at the start of every touch we're not considered to be moving
  alert("Touch starting");
  app.__touchMoving = 0;
}, false);

el.addEventListener('touchmove', function(e) {
  app.__touchMoving++;
}, false);

el.addEventListener('touchend', function(e) {
  alert("Touch ended. We moved beforehand this many times: " + app.__touchMoving);
  // if we are moving
  if (app.__touchMoving > 0) {
    // stop, since we're dragging, not tapping
      return false;
  }
  // else we're no longer moving, so it was a tap
}

touchstartアラートが表示されません。スクロールするtouchendと、起動し、 app__touchMoving にはある程度の価値があります。touchend余談ですが、意志が複数回発火するように見える場合があることに気付きました。

ここで基本的なものが欠けていますか?多くの人が、これは Android (および iPhone) で問題なく動作するはずだと言っていますが、最初のリスナーは起動しないようです。

更新: Android 2.1 を実行している Samsung Galaxy S でテストしていることに言及する必要があります。

4

1 に答える 1

0

uが使用できるかどうかわかりません:iScroll

于 2010-11-09T21:21:29.330 に答える