摘要:本文将带你了解微信小程序开发之长按事件触发点击事件的BUG处理,希望本文对大家学微信有所帮助。
本文将带你了解微信小程序开发之长按事件触发点击事件的BUG处理,希望本文对大家学微信有所帮助。
微信小程序开发说实话还是有点糟心的,经过时间冒泡的坑之后,又遇到了长按事件(longtap)必触发点击事件(tap)的BUG如下代码wxml<viewclass="container">
<view>
<buttonbindtap="tap"bindlongtap="longtap">长按我</button>
</view>
</view>
jsPage({
data: {
},
tap: function(){
console.log('触发了 tap')
},
longtap: function(){
console.log('触发了 longtap')
}
})
效果解决方法Google后确定是BUG后,看了一下网上的解决方法,基本都是通过 touchstart 和 touchend重新判定 tap 和 longtap 事件的,个人不是很喜欢。看一下微信小程序的事件定义:tap, 手指触摸后马上离开longtap, 手指触摸后,超过350ms再离开也就是说,目前的触发的顺序是 longtap -> touchend -> tap那么其实解决也很清晰了,简单来说就是 加把锁 , 应用到上面的代码上:Page({
data: {
lock: false
},
tap: function(){
//检查锁
if (this.data.lock) {
return;
}
console.log('触发了 tap')
},
touchend: function(){
if (this.data.lock) {
//开锁
setTimeout(()=> {
this.setData({ lock: false });
}, 100);
}
},
longtap: function(){
//锁住
this.setData({lock: true});
console.log('触发了 longtap')
}
})
看一下效果延伸大部分情况下,我们都是不需要在 touchend 中加锁的,因为长按操作会触发其他的异步操作,只要保证异步操作的最后把锁解除了即可。
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之微信频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号