• 小程序开发


    要实现双击的基本思路,就是通过touch来记录时间,然后通过最后一次点击时间减去touch的时间,如果时间小于300,就是双击时间,否则就是单击时间

    1.首先,需要在js中定义几个变量

      // 触摸开始时间
      touchStartTime: 0,
      // 触摸结束时间
      touchEndTime: 0,  
      // 最后一次单击事件点击发生时间
      lastTapTime: 0, 
      // 单击事件点击后要触发的函数
      lastTapTimeoutFunc: null, 

    2.触摸事件的函数

      /// 按钮触摸开始触发的事件
      touchStart: function(e) {
        this.touchStartTime = e.timeStamp
      },
     
      /// 按钮触摸结束触发的事件
      touchEnd: function(e) {
        this.touchEndTime = e.timeStamp
      },

    3.在界面中需要绑定点击事件的地方,需要加入bindtouchstart 和bindtouchend,以便记录下按钮开始触摸和结束触摸的时间。其他的分别绑定好单击、双击、长按事件就好了。

    <view class = "btn" bindtap="multipleTap" bindlongtap="longTap" bindtouchstart="touchStart" bindtouchend="touchEnd">
        单击/双击/长按
    </view>

    4.单击、双击和长按同时存在的实现:

      /// 长按
      longTap: function(e) {
        console.log("long tap")
        wx.showModal({
          title: '提示',
          content: '长按事件被触发',
          showCancel: false
        })
      },
     
      /// 单击、双击
      multipleTap: function(e) {
        var that = this
        // 控制点击事件在350ms内触发,加这层判断是为了防止长按时会触发点击事件
        if (that.touchEndTime - that.touchStartTime < 350) {
          // 当前点击的时间
          var currentTime = e.timeStamp
          var lastTapTime = that.lastTapTime
          // 更新最后一次点击时间
          that.lastTapTime = currentTime
          
          // 如果两次点击时间在300毫秒内,则认为是双击事件
          if (currentTime - lastTapTime < 300) {
            console.log("double tap")
            // 成功触发双击事件时,取消单击事件的执行
            clearTimeout(that.lastTapTimeoutFunc);
            wx.showModal({
              title: '提示',
              content: '双击事件被触发',
              showCancel: false
            })
          } else {
            // 单击事件延时300毫秒执行,这和最初的浏览器的点击300ms延时有点像。
            that.lastTapTimeoutFunc = setTimeout(function () {
              console.log("tap")
              wx.showModal({
                title: '提示',
                content: '单击事件被触发',
                showCancel: false
              })
            }, 300);
          }
        }
      },

    参考链接:https://blog.csdn.net/h330531987/article/details/80651139

  • 相关阅读:
    关于_OPENMP预编译
    Java FlameGraph 火焰图
    java的-cp和-Djava.library.path
    maven依赖包和依赖仓库(2)
    opencv读取图像输入到tensorflow模型中进行运算【cpp】
    NiftyNet 项目了解
    windows编译tensorflow c++库
    关于Tensorflow 的数据读取环节
    Itunes connect上传应用视频 app preview时遇到“无法载入文件”的问题
    Unity 扩展编辑器
  • 原文地址:https://www.cnblogs.com/cap-rq/p/10303169.html
Copyright © 2020-2023  润新知