uniapp开发vue3监听右滑返回操作,返回到指定页面,解决边缘区域监听错误问题

想要在uniapp框架中监听左滑或者右滑手势,需要使用touchstart和touchend两个api,因为没有原生的左右滑监听api,所以我们只能依靠这两个api来获取滑动开始时候的x坐标和滑动结束后的x坐标做比对,右滑的话,结束时候的x坐标-开始的x坐标肯定是大于一定阈值的,比如大于50,我们就算它右滑了。

给元素绑定滑动事件:

监听滑动距离:

当滑动距离大于50,说明是右滑返回操作:处理自定义返回操作backHandle。

完成的代码:

    <view
        class="orderDetail"
        :style="{ paddingTop: contentTop }"
        @touchstart="touchStart"
        @touchend="touchEnd"
    >

    。。。

    </view>




    // 监听滑动距离
    // move x
    let startX = 0

    // 监听手势右滑事件
const touchStart = (event) => {
    console.log('touchStart', event)
    startX = event.touches[0].clientX
}

const touchEnd = (event) => {
    console.log('touchEnd', event)
    const endX = event.changedTouches[0].clientX
    console.log('move x :', endX)
    if (endX - startX > 50) {
        // 说明是右滑返回了,自定义滑动事件
        backHandle()
    }
}

遇到的问题

1.如果是在边缘区域触发滑动返回,则有可能会没有监听到touchend事件,所以就会导致右滑失败,只会触发touchstart事件。

2.还有手机原生的返回按钮,也要做相应的处理

解决办法:使用onUnload事件,官方文档:页面 | uni-app官网

不能使用onBackPress事件,因为不支持微信小程序

这个时候就只能使用onUnload事件了:

import { onLoad, onUnload } from '@dcloudio/uni-app'



onUnload(() => {
    console.log('返回按钮')
    自定义逻辑
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1024小神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值