小さなプログラムは穴を踏んで覚えます——長い押してクリックする事件と衝突します

2166 ワード

同じコントロールでbindtapとbindlongtapを同時に設定すると、bindlongtapのイベントが時間通りに表示され、クリックイベントがトリガーされます.
テストにより,ウィジェットにおけるイベント実行の順序は,touchstart→touchend→tap長押しtouchstart→longtap→touchend→tapであることが分かった.
処理方法:
// wxml
<view bindtouchstart="bindTouchStart" bindtouchend="bindTouchEnd" bindlongtap="bingLongTap" bindtap="bindTap"> view>
// js
bindTouchStart: function(e) {
    this.startTime = e.timeStamp;
}
bindTouchEnd: function(e) {
    this.endTime = e.timeStamp;
}
bindTap: function(e) {
    if(this.endTime  - this.startTime < 350) {
        console.log(" ")
    }
}
bingLongTap: function(e) {
    console.log(" ");
}

このように時間で判断すれば、ある程度この問題を解決することができる.
文章「小プログラム踏坑記--長押しとクリック事件の衝突」を参考にした.