【微信小程序】解决点击(bindtap)和长按(bindlongtap)冲突

这篇具有很好参考价值的文章主要介绍了【微信小程序】解决点击(bindtap)和长按(bindlongtap)冲突。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

点击事件的执行:

<button bindtap="bindtap" bindtouchstart="touchstart" bindtouchend="touchend">按钮</button>

【微信小程序】解决点击(bindtap)和长按(bindlongtap)冲突

可以看到顺序为:touchstart → touchend → tap

长按事件的执行:

 <button bindtap="bindtap" bindlongtap="bindlongtap" bindtouchstart="touchstart" bindtouchend="touchend">按钮</button>

【微信小程序】解决点击(bindtap)和长按(bindlongtap)冲突

可以看到顺序为:touchstart → longtap → touchend → tap

当我们在一个标签上同时设置bindtapbindlongtap时, 会发现长按时先触发bindlongtap的事件,松开后还会触发tap事件,就没有达到预期的效果。

场景:一个按钮长按时颜色发生变化,松开时颜色恢复,并且点击时无任何变化

思路:在data中用一个状态去维护,长按与松开时去改变这个状态然后控制颜色的变化

实现:

 <button bindlongtap="bindlongtap" bindtouchend="touchend" style="background-color: {{active? '#10C0D6' : '#e7fafd'}};"> </button>
data: {
	active: false
},

bindlongtap() {
	this.setData({active: !this.data.active})
},

touchend() {
	this.setData({active: !this.data.active})
}

可以发现长按与松开时确实达到了我们想要的效果,但是当我们点击按钮时,按钮的颜色也发生了变化,原因就是点击的时候也触发了touchend事件导致状态发生改变,没有达到我们的需求。

那么要如何判断是长按还是点击触发的touchend事件?

【微信小程序】解决点击(bindtap)和长按(bindlongtap)冲突
官方给出的界定是从触摸开始到触摸结束要超过350ms就是长按

那么我们可以在触摸开始的时候记录一个时间,在触摸结束的时候记录一个时间,借助事件对象的参数timeStamp

【微信小程序】解决点击(bindtap)和长按(bindlongtap)冲突文章来源地址https://www.toymoban.com/news/detail-491729.html

 <button bindlongtap="bindlongtap" bindtouchstart="touchstart" bindtouchend="touchend" style="background-color: {{active? '#10C0D6' : '#e7fafd'}};"> </button>
data: {
	active: false,
	startTimeStamp:0
},

bindlongtap() {
	this.setData({active: !this.data.active})
},

touchstart(e) {
  this.setData({startTimeStamp:e.timeStamp})
},

touchend(e) {
  if(e.timeStamp - this.data.startTimeStamp < 350) {
      return false
    } else {
      this.setData({active: !this.data.active})
    }
}

到了这里,关于【微信小程序】解决点击(bindtap)和长按(bindlongtap)冲突的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包