移动端滑动事件处理

    
复制代码
@touchmove="midTouchmove"
 
  
    // 滑动
    midTouchmove(event) {
      //  event.preventDefault();
      let e = e || window.event;
      let touch = e.targetTouches[0];
      // 禁用多指事件和防触发滑动事件
      if (this.isMoreRefers || (touch.pageY < 450) || (touch.pageY > 750) || Math.abs(touch.pageX - this.initX) < 20){ return false }
          let item = null
          if (this.pageYOffset === 0) {
            // 单指滑动事件(API 计算方法, 性能较好,窗口出现滚动条时返回值 null)
            let ele = document.elementFromPoint( Math.round(touch.pageX), Math.round(touch.pageY));
            if (ele.getAttribute('class') !== 's-paly') { return false }
            let eleIndex = parseInt(ele.dataset.index);
            item = this.notesMid[eleIndex]
          }else {
            // 单指滑动事件(原生计算方法, 计算量比较大,支持多种场景)
            if (touch.pageY < 618) {
              item = this.changeMove(this.notesMid, this.curItemNote, true, this.initX, touch.pageX, this.midWindth)
            } else {
              let mid = this.notesMid.filter( v => v.key.indexOf('f') == -1 )
              item = this.changeMove(mid, this.curItemNote, false, this.initX, touch.pageX, this.midWindth )
            }
          }
          if (item === false || item === null ) { return false }
          if (this.timeGap && this.lastValue !== item.value) {
            let that = this;
            let curIndex = this.curKeyIndex.indexOf(item.value)
            if (curIndex < 0) {
              this.curKeyIndex.push(item.value)
            }
            this.pressBtn(item)
            this.lastValue = item.value
            this.timeGap = false
            setTimeout(() => {
              that.timeGap = true
              this.curKeyIndex.splice(1, 1)
              }, 10)
          }
      },
View@touchmove="midTouchmove"
 
  
    // 滑动
    midTouchmove(event) {
      //  event.preventDefault();
      let e = e || window.event;
      let touch = e.targetTouches[0];
      // 禁用多指事件和防触发滑动事件
      if (this.isMoreRefers || (touch.pageY < 450) || (touch.pageY > 750) || Math.abs(touch.pageX - this.initX) < 20){ return false }
          let item = null
          if (this.pageYOffset === 0) {
            // 单指滑动事件(API 计算方法, 性能较好,窗口出现滚动条时返回值 null)
            let ele = document.elementFromPoint( Math.round(touch.pageX), Math.round(touch.pageY));
            if (ele.getAttribute('class') !== 's-paly') { return false }
            let eleIndex = parseInt(ele.dataset.index);
            item = this.notesMid[eleIndex]
          }else {
            // 单指滑动事件(原生计算方法, 计算量比较大,支持多种场景)
            if (touch.pageY < 618) {
              item = this.changeMove(this.notesMid, this.curItemNote, true, this.initX, touch.pageX, this.midWindth)
            } else {
              let mid = this.notesMid.filter( v => v.key.indexOf('f') == -1 )
              item = this.changeMove(mid, this.curItemNote, false, this.initX, touch.pageX, this.midWindth )
            }
          }
          if (item === false || item === null ) { return false }
          if (this.timeGap && this.lastValue !== item.value) {
            let that = this;
            let curIndex = this.curKeyIndex.indexOf(item.value)
            if (curIndex < 0) {
              this.curKeyIndex.push(item.value)
            }
            this.pressBtn(item)
            this.lastValue = item.value
            this.timeGap = false
            setTimeout(() => {
              that.timeGap = true
              this.curKeyIndex.splice(1, 1)
              }, 10)
          }
      },
Code
复制代码

 

 
posted @   libenzheng  阅读(352)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示