微信小程序(触控事件)

本文详细介绍了微信小程序中的触控事件,包括事件简介、事件类型、事件绑定、触控事件(如tap、双击、长按longpress)及其处理方法。通过实例分析了长按与点击事件冲突的解决方案,并总结了滑动事件的判断逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事件简介

  • 事件简介
  • ①本质:事件是视图层到逻辑层的通讯方式
  • ②作用:事件可以将用户的行为反馈到逻辑层进行处理
  • ③应用:事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数
  • ④参数:事件对象可以携带额外信息,如 id, dataset, touches

事件类型

  • 在编写代码中,使用频率高的事件方式是
    在这里插入图片描述
  • 常见的事件类型
    在这里插入图片描述
  • 注意:touch触屏系列事件常结合画布canvas组件使用,简单了解即可

事件绑定

  • 事件绑定的写法同组件的属性,以 key、value 的形式
  • ①key 以bind或catch开头,然后跟上事件的类型,如bindtap、catchtap等。自基础库版本 1.5.0 起,在非原生组件中,bind和catch后可以紧跟一个冒号,其含义不变,如bind:tap、catch:touchstart
  • ②value 是一个字符串,需要在对应的 Page 中定义同名的函数。不然当触发事件的时候会报错
  • ③bind事件绑定不会阻止冒泡事件向上冒泡,catch事件绑定可以阻止冒泡事件向上冒泡

触控事件

  • (1)触控事件之单击tap
  • 分析:单击事件由touchstart、touchend组成,touchend后触发tap事件。
  • 事件对象event:当事件回调触发的时候,逻辑层绑定该事件的处理函数会收到一个事件对象,event对象包含参数timeStamp
    在这里插入图片描述
  • 验证:
    在这里插入图片描述
  • 验证后可以发现tap顺序为touchstart→touchend→tap
  • (2)触控事件之双击
  • 注意:
    微信官方文档没有双击事件,需要开发者自己定义处理。
  • 分析:
    双击事件可以由两个单击事件组成,只要两次点击的间隔时间小于600ms(或者300ms)则认为是双击行为;
  • 顺序:
    双击执行顺序为touchstart → touchend → tap → touchstart → touchend → tap
  • 验证:
    在这里插入图片描述
    在这里插入图片描述
  • (3)触控事件之长按longtap
  • 长按事件手指触摸后,超过350ms再离开,触发长按事件longtap
    在这里插入图片描述
  • 长按后控制台输出结果
    在这里插入图片描述
  • 翻译为:“\longtap\”事件已弃用,请改用“longpress”事件,所以接下来将longtap改为longpress
  • 触发顺序:touchstart → longtap → touchend → tap
  • 开发问题:通过上个案例,可以看出一个元素上同时绑定了点击事件与长按事件时,当长按事件触发时,点击事件也会被触发
  • 解决办法:记录手指点下与手指抬起之间的时间差 ,在触发tap事件前 判断时间差,若小于350 就触发tap ,否则视为长按
    在这里插入图片描述
  • 接下来将longtap改为longpress,进行测试
    在这里插入图片描述
  • ①长按后控制台输出
    在这里插入图片描述
  • ②单击时控制台输出
    

在这里插入图片描述

  • 总结:
  • 验证后发现,longpress长按事件已经避免了旧版longtap事件与tap事件同时触发的bug,所以以后开发用longpress解决长按事件即可。
  • 触发顺序小结
  • 单击、双击、长按属于点触事件,会触发touchstart、touchend、tap事件
    在这里插入图片描述
  • (4)触控事件之滑动touch系列
  • 滑动事件由touchstart、touchmove、touchend组成,一般指的是手指触摸屏幕并移动
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 坐标轴及业务逻辑分析:
  • ①假设A点为touchstart事件触摸点,坐标为A(ax,ay),然后手指向上滑动到点B(bx,by),就满足条件by < ay
  • ②同理,向右滑动到C(cx,cy),满足cx > ax;向下滑动到D(dx,dy),满足dy > ay;向左移动到E(ex,ey)满足ex < ax
  • ③计算线段AB在Y轴上投影长度为m,在X轴上的投影长度为n
  • ④计算r = m/n,如果r > 1,视为向上滑动,同理计算线段AC,AD,AE在Y轴投影长度与X轴的投影长度之比,得出向右向下向左的滑动
  • ①初始化数据
    在这里插入图片描述
  • ②开始触摸
    在这里插入图片描述
  • ③触摸点移动,动态计算判断方向
    在这里插入图片描述

总结

  • (1)事件简介
  • (2)事件类型
  • (3)事件绑定
  • (4)触控事件
  • ①单击tap;②自定义双击处理;③长按longtap与longpress;④touch系列之touchstart、touchmove、touchend

完毕!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值