3

ユーザーがピンチズームを行っていることを検出する方法があるかどうか知りたいです。

ユーザーがズームインするときに2つのことをしたい:

  1. divに画面の左側を揃えさせます
  2. divの幅をビューポートの幅と同じに設定します

Androidにはtouchstart、、がtouchendありtouchmoveますが、マルチタッチ中にトリガーされません。ズーム終了後すぐに上記の機能を完了したい。

他にアプローチはありますか?


私はウェブアプリをやっていない。モバイル版にいくつかの機能を追加しているところです。

4

2 に答える 2

1

Android ブラウザはJavaScripttouchstarttouchend&touchmoveをサポートしていますが、古い Android の問題は、これらのイベントが検出するタッチの数です。

たとえば、次のコードは、IOS および新しい Android デバイスでメッセージをログに記録します。

var obj = document.getElementById('elmId');
obj.addEventListener('touchmove', function(event) {
  if (event.targetTouches.length == 2) {
    console.log("exactly 2 fingers gesture inside elmId ");
  }
}, false);

event.targetTouches.lengthと等しくなることはないため、古いアンドロイドは何もしません2

IMHO、ほとんどのデバイスをサポートし、古いデバイスにフォールバック オプションを提供するこのアプローチを使用する必要があります (ダブルタップやボタンをズームするなど、他のジェスチャーを使用してズームします)。

于 2012-03-22T11:17:54.093 に答える
0

AndroidにはScaleGestureDetectorがあります。これがです。ただし、回転などの追加のマルチタッチサポートが必要な場合は、このライブラリをお勧めします。私はそれを個人的に(複数の画像の変換行列を保存および取得するために)使用し、優れたリソースであることがわかりました。

于 2012-03-22T08:01:31.790 に答える