uni-app nvue无法取消ios的下拉上拉弹簧效果

uni-app nvue无法取消ios的下拉上拉弹簧效果

开发环境 版本号 项目创建方式
Windows win10 HBuilderX
产品分类:uniapp/App

PC开发环境操作系统:Windows

PC开发环境操作系统版本号:win10

HBuilderX类型:正式

HBuilderX版本号:3.99

手机系统:iOS

手机系统版本号:iOS 17

手机厂商:苹果

手机机型:iphone12

页面类型:vue

vue版本:vue2

打包方式:云端

项目创建方式:HBuilderX

### 操作步骤:
```json
{
    "path": "pages/devices/deviceDetail",
    "style": {
        "disableScroll": true,
        "navigationBarTitleText": "设备详情",
        "navigationStyle": "custom",
        "app-plus": {
            "bounce": "none"
        }
    }
}

预期结果:

下拉到底部就底部,不要再下拉多一段距离

实际结果:

下拉到底部用户还能再拉动一段距离

bug描述:

“bounce”: “none”,但是我的仍然可以下拉

在一般的vue中我可以使用样式穿透实现效果(下拉到底部就不会下往下多拉动一点距离)

/deep/.uni-scroll-view,
.uni-scroll-view-content {
    overscroll-behavior: none;
}

/deep/.uni-scroll-view-content {
    overscroll-behavior: none;
}

关键是nvue也不支持样式穿透


更多关于uni-app nvue无法取消ios的下拉上拉弹簧效果的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

https://ask.dcloud.net.cn/question/111919老帖子的问题 用了老帖子的方法 仍然没啥用

更多关于uni-app nvue无法取消ios的下拉上拉弹簧效果的实战教程也可以访问 https://www.itying.com/category-93-b0.html


https://ask.dcloud.net.cn/question/146216
2022-06-01
的老帖子 同样的问题
2年了 官方有解决方法了吗?

uni-app 中,使用 nvue 开发时,iOS 的下拉和上拉弹簧效果是默认的滚动行为,无法直接通过 nvue 的配置或样式来完全取消。不过,你可以通过一些变通的方法来限制或模拟取消这种效果。

以下是一些可能的解决方案:


方法 1:禁用滚动

如果你不需要页面滚动,可以直接禁用容器的滚动行为。例如:

<template>
  <view class="container" :scroll-y="false">
    <!-- 内容 -->
  </view>
</template>

<style>
.container {
  flex: 1;
  overflow: hidden; /* 禁用滚动 */
}
</style>

通过设置 overflow: hidden,可以完全禁止页面滚动,从而避免弹簧效果。


方法 2:使用 scroll-view 替代

如果你需要局部滚动,可以使用 scroll-view 组件,并设置 scroll-yscroll-x 来控制滚动方向。例如:

<template>
  <scroll-view scroll-y :scroll-with-animation="false" class="container">
    <!-- 内容 -->
  </scroll-view>
</template>

<style>
.container {
  height: 100vh; /* 设置高度 */
}
</style>

scroll-view 的滚动行为比默认的页面滚动更容易控制,但仍然可能存在轻微的弹簧效果。


方法 3:通过原生插件修改

如果你需要完全取消 iOS 的弹簧效果,可以通过原生插件来实现。比如,在 iOS 中可以通过修改 UIScrollViewbounces 属性来禁用弹簧效果。

  1. uni-app 中创建一个原生插件。
  2. 在原生代码中,找到 UIScrollView 实例,并设置 bounces = NO

具体实现可以参考 uni-app原生插件开发文档


方法 4:使用 web-view 替代

如果你不需要 nvue 的性能优势,可以考虑使用 web-view 加载一个 HTML 页面,然后在 HTML 页面中通过 CSS 或 JavaScript 控制滚动行为。

<template>
  <web-view src="/path/to/your-page.html"></web-view>
</template>

在 HTML 页面中,可以通过以下 CSS 禁用滚动:

body {
  overflow: hidden;
}

方法 5:调整滚动边界

如果你希望保留滚动功能,但减少弹簧效果的影响,可以通过调整滚动边界来实现。例如:

<template>
  <view class="container">
    <view class="content">
      <!-- 内容 -->
    </view>
  </view>
</template>

<style>
.container {
  flex: 1;
  overflow: hidden;
}

.content {
  height: 100%;
  overflow-y: auto; /* 启用滚动 */
}
</style>
回到顶部