3

iOSで電話ギャップのあるjqueryモバイルを使用していますが、指を左右に動かさずに画面をタップした場合にのみタップイベントがトリガーされることに気付きました。以下は私のバインドコードです。

$(".pic-cont").on("tap",{count: "not needed"},function(event){
        console.log("Clicked");
        ....

私はゲームを作成していますが、ユーザーは画面上のものをすばやくタップします。すばやくタップすると、指がスライドしてタップイベントが登録されないことに気付きます。私が使用できる他のイベント(タッチダウンイベントなど)があるので、ユーザーの指が画面に当たると、指を上下左右に動かしたり押したりしてもすぐにイベントが登録されます。

ありがとう!

4

3 に答える 3

3

jQuery Mobile の場合、解決策はほとんどありませんが、あなたのケースでは 1 つが機能します。

解決策 1 - jQuery ソリューション

タップ イベントの代わりに、タッチスタート イベントを使用する必要があります。これはタップのように機能すると同時に、画面のスワイプ中にトリガーされる最初のイベントです。

コード例を次に示します。

$(document).on('pagebeforeshow', '#index', function(){       
    $(document).on('touchstart', '#index', function(){       
        alert('touchstart');
    });
});

そして、私はあなたに実用的な例を作りました: http://jsfiddle.net/Gajotres/vDqdD/

解決策 2 - jQuery Mobile ソリューション

touchstart は万能なソリューションですが、古いバージョンの jQuery Mobile (1.1 以下) を使用する古い Android デバイスでは機能しません。

したがって、防弾バージョンを作成する必要がある場合は、touchstart の代わりにvmousedownイベントを使用する必要があります。

$(document).on('pagebeforeshow', '#index', function(){       
    $(document).on('vmousedown', '#index', function(){       
        alert('vmousedown');
    });
});

そして、これが動作するjsFiddleの例です: http://jsfiddle.net/Gajotres/vDqdD/4/

于 2013-03-17T16:59:58.353 に答える
2

ゲームの場合は、ネイティブのタッチ イベントを使用することをお勧めします: https://developer.mozilla.org/en-US/docs/DOM/Touch_events。それらを使用すると、「タップ」などの便利なイベントを使用するよりもはるかに厳密に制御できます。

于 2013-03-16T19:37:23.937 に答える
1

正確なイベントについては、このQuo JS軽量 JavaScript ライブラリを試してみてください。SOからのいくつかの提案でこれを見つけました。それは素晴らしく、非常に正確に機能しました。

于 2013-03-17T11:09:22.897 に答える