微信小程序长按事件

一、longtap 

事件触发顺序:touchstart → longtap → touchend → tap

当我们在一个标签上同时设置bindtap和bindlongtap时, 会发现长按时先触发bindlongtap的事件,松开后还会触发tap事件,就没有达到预期的效果。

场景:一个按钮长按时颜色发生变化,松开时颜色恢复,并且点击时无任何变化

思路:在data中用一个状态去维护,长按与松开时去改变这个状态然后控制颜色的变化

 

官方给出的界定是从触摸开始到触摸结束要超过350ms就是长按

那么我们可以在触摸开始的时候记录一个时间,在触摸结束的时候记录一个时间,借助事件对象的参数timeStamp

index.wxml

 <button bindlongtap="bindlongtap" bindtouchstart="touchstart" bindtouchend="touchend"> </button>

index.js

复制代码
data: {
    startTimeStamp:0
},

bindlongtap() {
    
},

touchstart(e) {
  this.setData({startTimeStamp:e.timeStamp})
},

touchend(e) {
  if(e.timeStamp - this.data.startTimeStamp < 350) { //点击
      return false
    } else { //长按
      
    }
}
复制代码

二、longpress 

 该事件手指触摸后,超过350ms再离开,如果指定了事件回调函数并触发了这个事件,tap事件将不被触发

index.wxml

<!--可以使用 bindlongpress 属性来绑定长按事件-->
<button bindlongpress="handleLongPress"></button>

index.js

复制代码
Page({
  data: {
    // 页面数据
  },
  handleLongPress: function(event) {
    // 处理长按事件逻辑
    console.log(event);
  },
})
复制代码

 

posted @   时光独醒  阅读(869)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2023-03-01 css背景模糊化
点击右上角即可分享
微信分享提示