vue js判断长按触发及手指的上滑、下滑、左滑、又滑
<span class="btn" @touchstart="touchstart()" @touchmove="touchmove()" @touchend="touchend()">按住说话</span>
@touchstart: 触发按下事件
touchstart() {
      event.preventDefault() //阻止默认事件(长按的时候出现复制)
      this.startX = event.changedTouches[0].pageX
      this.startY = event.changedTouches[0].pageY
}
@touchmove:触发移动事件,通过x轴y轴移动的距离判断是左滑又滑
touchmove() { // 如果手指有移动,则取消所有事件,此时说明用户只是要移动而不是长按
      event.preventDefault()
      var moveEndX = event.changedTouches[0].pageX
      var moveEndY = event.changedTouches[0].pageY
      var X = moveEndX - this.startX
      var Y = moveEndY - this.startY
      if (Math.abs(X) > Math.abs(Y) && X > 0) {
        alert('left 2 right')
      } else if (Math.abs(X) > Math.abs(Y) && X < 0) {
        alert('right 2 left')
      } else if (Math.abs(Y) > Math.abs(X) && Y > 0) {
        alert('top 2 bottom')
      } else if (Math.abs(Y) > Math.abs(X) && Y < 0) {
        alert('bottom 2 top')
      } else {
        alert('just touch')
      }
    },
touchmove的最后坐标减去touchstart的起始坐标,X的结果如果正数,则说明手指是从左往右划动;X的结果如果负数,则说明手指是从右往左划动;Y的结果如果正数,则说明手指是从上往下划动;Y的结果如果负数,则说明手指是从下往上划动。
但是:
实际上手指在手机上面滑动时很难做到直上直下的滑动;只要稍微有点斜,就会被x轴的判断现行接管,而与我们的实际操作医院相背离。此时就需要添加特殊的判断技巧,代码如下:
@touchend:触发结束移动事件 通过事件判断是否是长按事件
touchend() { // 手释放,如果在500毫秒内就释放,则取消长按事件
      event.preventDefault()
      this.EndTime = new Date().getTime()
      this.isRecord = false
      if (this.EndTime - this.StarTime < 500) {
        this.EndTime = 0
        this.StarTime = 0
        clearTimeout(this.timeOutEvent)// 清除定时器
        alert('取消')
      } else {
        alert('松手')
        wx.stopRecord({
          success: function(res) {
            alert('localId')
            alert(res)
            alert(JSON.stringify(res))
            this.localId = res.localId
          },
          fail: function(res) {
            alert(JSON.stringify(res))
          }
        })
      }
参考文献:https://www.cnblogs.com/lijuntao/p/6479972.html
vue js判断长按触发及手指的上滑、下滑、左滑、又滑的更多相关文章
- vue.js中父组件触发子组件中的方法
		知识点:vue.js中,父组件的method中,触发子组件中的方法,获得子组件中的定义的属性 (1)子组件 : child_crud.js var html_child_crud= "< ... 
- vue.js 父组件如何触发子组件中的方法
		组件 什么是组件? 组件 (Component) 是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊 ... 
- 解决vue.js修改数据无法触发视图
		data:{checkValue:{}}that.checkValue[key] = [] 赋值无法实时改变变量:(数据其实最终被修改,但是并没有触发检测从而更新视图)原因:Vue 不能检测到对象属性 ... 
- Vue.js 判断对象属性是否存,不存在添加
		Vue.set是可以对对象添加属性的,这里item对象添加一个checked属性 //if(typeof item.checked=='undefined'){if(!this.item.checke ... 
- vue.js使用webpack发布,部署到服务器上之后在浏览器中可以查看到vue文件源码
		webpack+vue 2.0打包发布之后,将发布的文件部署到服务器中之后,浏览器中访问的时候会出现一个webpack文件夹,里边会显示vue文件源码 如果不想让vue源文件显示出来,可以在confi ... 
- [转]客户端js判断文件类型和文件大小即限制上传大小
		原文地址:https://www.jb51.net/article/43498.htm 需要脚本在客户端判断大小和文件类型,由于网上没有适合的,就自己写了一个并测试 文件上传大小限制的一个例子,在此与 ... 
- 客户端js判断文件类型和文件大小即限制上传大小
		<html> <head> <meta http-equiv="Content-Type" content="text/html; char ... 
- Vue.js项目中使用 Ajax 和 FormDate 对象上传文件
		let param = new FormData(); param.append("paths", this.ruleForm.uploadPath); param.append( ... 
- Vue.js 组件的三个 API:prop、event、slot
		组件的构成 一个再复杂的组件,都是由三部分组成的:prop.event.slot,它们构成了 Vue.js 组件的 API.如果你开发的是一个通用组件,那一定要事先设计好这三部分,因为组件一旦发布,后 ... 
随机推荐
- HiveQl 基本查询
			1 基本的Select 操作 SELECT [ALL | DISTINCT] select_expr, select_expr, ...FROM table_reference[WHERE where ... 
- day19模块1
			http://www.cnblogs.com/Eva-J/articles/7228075.html#_label10 collections模块: 在内置数据类型(dict.list.set.tup ... 
- python 的bif
			函数在类里面就叫做方法from sys import pi 导入sys模块里面的pi方法import sys as system 命名为新的名字dir(sys) 查看sys模块里面都提供了哪些东西he ... 
- kettle使用文件导入到Postgresql出现如下几种问题的总结
			1.kettle使用文件导入到Postgresql出现如下几种问题的总结: kettle使用文件导入到Postgresql出现如下几种问题的总结: .第一种错误,报错如ERROR: extra dat ... 
- ABP给WebApi添加SwaggerUI,生成可交互接口文档
			在ABP模板项目中,通过SwaggerUI可以为我们的WebApi生成动态的可交互接口文档页面,从而可以很方便的测试调用我们的WebApi接口. 一.集成Swagger 右键项目YoYo.Web,打开 ... 
- HDU.5385.The path(构造)
			题目链接 最短路构造题三连:这道题,HDU4903,SRM590 Fox And City. \(Description\) 给定一张\(n\)个点\(m\)条边的有向图,每条边的边权在\([1,n] ... 
- NEO智能合约开发(二)再续不可能的任务
			NEO智能合约开发中,应用合约比较简单,是的你没看错,应用合约比较简单. 应用合约三部曲,发布.调用.看结果.除了看结果工具比较缺乏,发布调用neogui最起码可以支撑你测试. 鉴权合约比较麻 ... 
- 【安全性测试】Android测试中的一点小发现
			在执行某个项目中的APP测试发现的两个问题,自然也是提供参考,作为经验记录下来. 一.通过apk的xml文件获取到某项目APP的账号和密码 使用eclipsel或者drozer,获得apk的xml文件 ... 
- angular.identity()
			<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ... 
- (83)Wangdao.com第十七天_JavaScript 定时器
			JavaScript 提供定时执行代码的功能,叫做 定时器(timer). 主要由 setTimeout() 和 setInterval() 这两个函数来完成.它们向任务队列添加定时任务 setTim ... 
