uni-app中 @longpress 长按事件失效

uni-app中 @longpress 长按事件失效

操作步骤:

  • 执行 longpress 长按事件 ,结果单击就执行了

预期结果:

  • 长按执行

实际结果:

  • 单击执行

bug描述:

  • uniapp中 @longpress 长按事件失效 变成单击事件了


| 项目 | 信息 |
| --- | --- |
| 产品分类 | uniapp/App |
| PC开发环境操作系统 | Windows |
| PC开发环境操作系统版本号 | win10 |
| HBuilderX类型 | 正式 |
| HBuilderX版本号 | 3.0.5 |
| 手机系统 | Android |
| 手机系统版本号 | Android 10 |
| 手机厂商 | OPPO |
| 手机机型 | PBEM00 |
| 页面类型 | vue |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |

更多关于uni-app中 @longpress 长按事件失效的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

未复现您说的问题。

更多关于uni-app中 @longpress 长按事件失效的实战教程也可以访问 https://www.itying.com/category-93-b0.html


确实是啊,长按失效,长按事件变单击了

我在pc端是无效的,也没有触发单击

楼主解决了吗

这是一个常见的uni-app长按事件问题,通常有以下几种解决方案:

  1. 检查代码写法是否正确:
<view @longpress="handleLongPress"></view>
  1. 可能是事件冒泡导致的,可以尝试添加.stop修饰符:
<view @longpress.stop="handleLongPress"></view>
  1. 确保没有同时绑定@click事件,两者可能会冲突。如果需要同时使用,可以这样处理:
let timer = null
methods: {
  handleTouchStart() {
    timer = setTimeout(() => {
      this.handleLongPress()
    }, 500) // 500ms作为长按判定时间
  },
  handleTouchEnd() {
    clearTimeout(timer)
  }
}
  1. 检查CSS样式,确保元素有足够的点击区域,某些样式可能导致事件触发异常。

  2. 升级HBuilderX到最新版本,3.0.5版本可能存在已知bug。

  3. 在Android平台上,系统默认的长按时间可能偏短,可以尝试在manifest.json中配置:

"app-plus": {
  "gesture": {
    "longpress": 1000 // 设置长按时间为1秒
  }
}
回到顶部