iPhoneでは、D3のパン/ズーム動作がうまく機能しません。この問題を確認するには、iPhoneでこのページにアクセスしてください:http://bl.ocks.org/mbostock/3892919D3のパン/ズーム動作がモバイルSafariで機能しない
パンすると、ブラウザウィンドウ全体がドラッグされる傾向があります。ズームすると、D3要素がピンチイベントを捕捉するのではなく、iPhone自体がページ上をズームすることがよくあります。
私はD3 v3.5.17を使用しています。これはiPhoneのChromeと同様、モバイルSafariでも発生します(ただし、Safariのままです)。
さらに調査すると、<rect>
および<circle>
などの特定のSVG要素は、適切にタッチイベントをキャッチし、D3を介してそれらを指示し、モバイルブラウザがそれらに応答しないように見えます。他のSVG要素(<svg>
や<g>
など)は、タッチイベントを無視してブラウザに表示されます。
私はtouchmove
ハンドラをSVG要素に貼り付け、そしてevent.preventDefault()
を使用して、ブラウザのイベント引き継ぎを試みました。それは動作しません。
d3.behavior.zoom()...
が返す関数をコンテナSVGとは異なる要素から呼び出すことを試みました。それも機能しません。
iOSブラウザのタッチイベント(ドラッグ&ピンチ)に対して、SVG全体が適切に反応するようにするにはどうすればよいですか?