uni-app 防探探滑动关闭效果

发布于 1周前 作者 h691938207 来自 Uni-App

uni-app 防探探滑动关闭效果

2 回复

公司承接项目外包开发、双端(Android,iOS)原生插件开发。
为什么选择我们: 1、1000 项目开发积累,数百种商业模式开发经验,更懂您的需求,沟通无障碍。 2、一年免费技术保障,系统故障或被攻击,2小时快速响应提供解决方案落地。 3、软件开发源码定制工厂,去中间商降低成本,提高软件开发需求沟通效率。 4、纯原生开发,拒绝模板和封装系统,随时更新迭代,增加功能,无需重做系统。 5、APP定制包办软件著作权申请,30天内保证拿到软著证书,知识产权受保护。 6、中软云科技导入严谨的项目管理系统,确保项目准时交付,快速抢占市场商机。 7、软件开发费、维护费、第三方各种费用公开透明,不花冤枉钱,不玩套路。
已有大量双端插件、App、小程序、公众号、PC、移动端、游戏等案例。
行业开发经验:银行、医疗、直播、电商、教育、旅游、餐饮、分销、微商、物联网、零售等
商务QQ:1559653449 商务微信:fan-rising
7x24小时在线,欢迎咨询了解


在uni-app中实现防探探滑动关闭效果,主要是通过监听页面的滑动事件,并在特定条件下阻止页面的默认关闭行为。以下是一个基本的代码示例,展示如何在uni-app中实现这一效果。

1. 页面结构 (pages/index/index.vue)

首先,创建一个基本的页面结构:

<template>
  <view class="container">
    <view class="content">
      <!-- 页面内容 -->
      <text>防探探滑动关闭效果示例</text>
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      startY: 0, // 初始触摸位置
      moveY: 0, // 移动中的触摸位置
      isDragging: false, // 是否正在拖动
    };
  },
  onTouchStart(event) {
    this.startY = event.touches[0].clientY;
    this.isDragging = false;
  },
  onTouchMove(event) {
    this.moveY = event.touches[0].clientY;
    const deltaY = this.moveY - this.startY;
    // 判断是否开始拖动(例如,垂直拖动距离超过50px)
    if (Math.abs(deltaY) > 50) {
      this.isDragging = true;
    }
    // 如果正在拖动,阻止默认行为(这里可以根据具体需求调整)
    if (this.isDragging) {
      event.preventDefault();
      event.stopPropagation();
    }
  },
  onTouchEnd() {
    // 拖动结束时重置状态
    this.startY = 0;
    this.moveY = 0;
    this.isDragging = false;
  },
};
</script>

<style>
.container {
  height: 100vh;
  overflow: hidden;
}
.content {
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  background-color: #f5f5f5;
}
</style>

2. 注册触摸事件

在页面的mounted生命周期钩子中注册触摸事件监听器:

mounted() {
  document.addEventListener('touchstart', this.onTouchStart);
  document.addEventListener('touchmove', this.onTouchMove);
  document.addEventListener('touchend', this.onTouchEnd);
},
beforeDestroy() {
  document.removeEventListener('touchstart', this.onTouchStart);
  document.removeEventListener('touchmove', this.onTouchMove);
  document.removeEventListener('touchend', this.onTouchEnd);
},

说明

  • onTouchStart:记录初始触摸位置。
  • onTouchMove:计算滑动距离,判断是否开始拖动,并在拖动时阻止默认行为。
  • onTouchEnd:重置状态。
  • mountedbeforeDestroy生命周期钩子中注册和移除事件监听器,确保组件销毁时不会留下内存泄漏。

这个示例提供了一个基础框架,你可以根据具体需求进一步调整和优化,例如增加动画效果或更复杂的判断逻辑。

回到顶部