一、就长按不松手还能穿透滑动这个bug来说,官方文档有给出这一方法:
@touchmove.stop.prevent="moveHandle"
二、这样确实长按不松手不能移动了,但是新的bug是我随便点到图标上滑动就会打开弹窗。
随后我搜了很多资料,找到了这个大佬的方法,记录一下,附上原文链接
uni-app 长按事件无法被页面滚动或滑动阻止问题解决_chenyu-max的博客-CSDN博客_如何在滑动时禁止长按
原理是,写三个事件,一个是触摸移动事件,一个是长按事件,一个是触摸结束事件,都给一个相同的变量来判断开关,我这里给的是pullscowl:true,代码如下
data(){
return{
pullscowl: true,
towshow: 0
}
},
methods: {
longtow(e, index) {
//长按事件
this.towshow= index
if (this.pullscowl) {
this.$refs.towpop.open(e);//打开弹出层
}
},
touchMove() {
// 手指触摸后的移动事件
this.pullscowl = false;
},
touchEnd() {
//手指触摸结束
this.pullscowl = true;
}
}
触摸后移动的事件,给变量赋值为false,关闭弹窗状态;在手指触摸结束(手指离开屏幕),给变量赋值为true,打开弹窗状态,这样下一次长按时还是能够打开弹窗。
三、解决单页面双层列表,弹窗不覆盖,呈现叠层问题(就是长按上列表的图表,再按下列表的图标,点击下图标时上弹窗不消失,导致两个弹窗和背景蒙版都在的bug)
最后这个bug解决方法是,再加上一个开始触摸事件,在手指触摸开始时,把两个列表的图标索引值清空
touchstart(){
this.ishow = '';
this.towshow = ''
},