uniapp长按持续触发方法,数量一直加减

请注意:由于之前本人的博文被百度文库收做商用,请各位转载此博客注明出处

最近项目遇见一个需求,需要长按按钮然后一直加减数值,

看了一下uniapp只提供了一个长按时间,等于需求还得自己写

但是长按触发也只是触发一次事件,明显不符合我所需要的一直持续触发数量一直加减

看了一下官方文档,工程化api里面提供了几个触发事件

 

处理的逻辑就为,用户按下按钮  =>  触发了一次长按事件 =>  事件持续触发数量一直加减  =>  用户停止按按钮

我们在这个逻辑中,是不需要按钮开始事件的,这是一个陷阱,

还有个问题便是,不可使用@click方法,需要使用@tap,不然不会触发单击事件

就是直接长按触发“长按事件”之后在data中定义一个计时器为 null 后续使用

等到长按结束时停止定时器,一整个流程就走完了

逻辑已经有了接下来就是直接贴代码吧

<template>
  <view>数量: {{ 1 }}</view>
  <button @tap="numAdd" @longPress="longPress" @touchend="touchend">
    长按触发
  </button>
</template>
<script>
export default {
  data() {
    return {
      num: 1,
      timeOnline: null,
    };
  },
  methods: {
    // 单击事件
    numAdd() {
      that.num = that.num + 1;
    },
    // 长按事件
    longPress() {
      let that = this;
      that.timeOnline = setInterval(() => {
        that.num = that.num + 1;
      }, 200); // 200毫秒触发一次
    },
    // 长按结束了
    touchend() {
      clearInterval(this.timeOnline); // 清除计时器
    },
  },
};
</script>

 

posted @ 2022-10-23 21:42  一抒山河  阅读(2041)  评论(0编辑  收藏  举报