iPhone/iPadでタッチイベント発生時のいろいろな情報を取得する

iPhone/iPadでのタッチイベントを使ったときに、指が画面上のどこにあるのか?なども知りたいと思います。
取得できる情報
タッチイベント時に取得できる情報はtouches/targetTouches/changedTouchesの3つのリストがあります。
- touches
- スクリーンに触れている指の情報。
- targetTouches
- 同じノード内で開始された指の情報。
- changedTouches
- イベント発生の元になった指の情報。
それぞれのリストからは以下の情報が取得できます。配列形式になっているので、インデックスを指定するとそれぞれの指の情報が取得できます。
- clientX / clientY
- クライアント領域(viewport)上の座標
- screenX / screenY
- 画面の表示領域上の座標
- pageX / pageY
- ページ全体(スクロールする領域も含む)の座標
- target
- タッチイベントが発生したときのノード
- identifier
- それぞれのタッチに対するユニークな値
例えば、1本目の指のページ上のX座標を取得するにはこんな感じ。
event.touches[0].pageX;
デモ
iPhoneまたはiPadをお持ちの方は実際に動くサンプルを作ってみましたので実機で確認してみてください。
JavaScript
// イベント登録
document.addEventListener('touchstart', touchHandler, false);
document.addEventListener('touchmove', touchHandler, false);
document.addEventListener('touchend', touchHandler, false);
function touchHandler(event)
{
// 指の本数
var fingers = event.touches.length;
$('.fingers').html(fingers); // jQuery使いました
// 各指の情報を取得
for (var i=0; i<5; i++) {
var x = event.touches[i] ? event.touches[i].screenX : "";
var y = event.touches[i] ? event.touches[i].screenY : "";
$('#screenx_' + i).html(x); // jQuery使いました
$('#screeny_' + i).html(y); // jQuery使いました
}
// 縦スクロールを停止
event.preventDefault();
}
コメントする