uni-app uni-swipe-action滑动右侧按钮区域后不会自动收回
uni-app uni-swipe-action滑动右侧按钮区域后不会自动收回
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | win11 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
HBuilderX类型:正式
HBuilderX版本号:4.66
手机系统:全部
手机厂商:华为
页面类型:vue
vue版本:vue2
打包方式:云端
测试过的手机:phone6s,12,13,华为,荣耀
示例代码:
正常官方案例代码
<uni-swipe-action ref="chatSwipeRef">
<uni-swipe-action-item :right-options="item.options" :disabled="item.disabled" v-for="(item,index) in list" :key="item.id" @click="handleChatActions">
<view >{{item}}</view>
</uni-swipe-action-item>
</uni-swipe-action>
操作步骤:
正常官方案例代码
预期结果:
在右侧按钮区域滑动,手指离开时候 也能自动收起或打开,而不是停留在touchend位置。
实际结果:
在右侧按钮区域滑动,停留在touchend位置
bug描述:
左滑展开右侧按钮区域后,点击按钮区域滑动时,不会自动收起,会停留在touchend位置。
更多关于uni-app uni-swipe-action滑动右侧按钮区域后不会自动收回的实战教程也可以访问 https://www.itying.com/category-93-b0.html
是不是设置 threshold 阈值的问题?
更多关于uni-app uni-swipe-action滑动右侧按钮区域后不会自动收回的实战教程也可以访问 https://www.itying.com/category-93-b0.html
没有设置其他的,代码就是上边的代码。我把滑动阈值设置为1试试?
感觉像是按钮的touchmove事件阻塞了整行的touchmove
回复 山葵蛋卷: 你提供一下一个完整的可以运行的代码吧
点击按钮区域左右拖动,会停住
看代码,看起来按钮区域的处理逻辑是与滑动区域处理逻辑不同的,测试各端都是这个效果
这个问题是由于uni-swipe-action组件在滑动右侧按钮区域时的默认行为导致的。根据官方文档,该组件默认只支持点击按钮触发关闭,滑动操作需要手动处理。
解决方案是在[@change](/user/change)事件中监听滑动状态,通过ref手动控制组件的关闭:
// 在data中定义
data() {
return {
currentSwipeIndex: -1
}
},
// 方法
methods: {
handleChange(e) {
this.currentSwipeIndex = e.detail.index
},
handleChatActions(e) {
// 处理按钮点击
console.log(e)
// 点击后关闭滑动区域
this.$refs.chatSwipeRef.close()
this.currentSwipeIndex = -1
}
}
模板中需要添加[@change](/user/change)事件监听:
<uni-swipe-action
ref="chatSwipeRef"
[@change](/user/change)="handleChange">
<uni-swipe-action-item
:right-options="item.options"
:disabled="item.disabled"
v-for="(item,index) in list"
:key="item.id"
@click="handleChatActions">
<view>{{item}}</view>
</uni-swipe-action-item>
</uni-swipe-action>


