uni-app textarea设置最大高度后,在自动增高时超出最大高度不可滚动,安卓设备可以滚动,IOS设备不行

uni-app textarea设置最大高度后,在自动增高时超出最大高度不可滚动,安卓设备可以滚动,IOS设备不行

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

PC开发环境操作系统:Windows

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

HBuilderX类型:正式

HBuilderX版本号:3.4.7

手机系统:iOS

手机系统版本号:iOS 15

手机厂商:苹果

手机机型:iphone x

页面类型:nvue

vue版本:vue2

打包方式:云端

项目创建方式:HBuilderX

示例代码:
在附件有demo项目,可以直接运行

操作步骤:
输入

预期结果:
可滚动

实际结果:
无法滚动

bug描述:
textarea设置最大高度,在自动增高时超出最大高度不可滚动,安卓可以滚动,IOS不行
不是纯nvue项目,也没用fast

更多关于uni-app textarea设置最大高度后,在自动增高时超出最大高度不可滚动,安卓设备可以滚动,IOS设备不行的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

更多关于uni-app textarea设置最大高度后,在自动增高时超出最大高度不可滚动,安卓设备可以滚动,IOS设备不行的实战教程也可以访问 https://www.itying.com/category-93-b0.html


自己顶一下

自己顶一下

自己顶一下

苹果的在textarea标签外面套个scroll-view就没问题

uni-app 中,textarea 组件在设置最大高度后,可能会出现自动增高时超出最大高度不可滚动的问题,尤其是在 iOS 设备上。这个问题通常是由于 iOS 的默认行为导致的,iOS 在处理 textarea 的滚动时与安卓设备有所不同。

解决方案

  1. 使用 scroll-view 包裹 textarea: 你可以将 textarea 放在 scroll-view 中,并设置 scroll-view 的高度和最大高度,这样即使 textarea 内容超出最大高度,scroll-view 也可以滚动。

    <scroll-view scroll-y="true" :style="{ maxHeight: '200px', overflow: 'auto' }">
      <textarea auto-height="true" :style="{ height: 'auto' }"></textarea>
    </scroll-view>
    
  2. 手动控制 textarea 的高度: 你可以通过监听 textarea 的输入事件,手动控制 textarea 的高度,确保它不会超过最大高度。

    <template>
      <textarea
        :style="{ height: textareaHeight + 'px', maxHeight: '200px', overflow: 'auto' }"
        @input="handleInput"
      ></textarea>
    </template>
    
    <script>
    export default {
      data() {
        return {
          textareaHeight: 40, // 初始高度
        };
      },
      methods: {
        handleInput(event) {
          const textarea = event.target;
          this.textareaHeight = Math.min(textarea.scrollHeight, 200); // 200px 是最大高度
        },
      },
    };
    </script>
    
  3. 使用 CSS 控制滚动: 你可以通过 CSS 来控制 textarea 的滚动行为,确保在内容超出最大高度时可以滚动。

    <textarea
      :style="{ maxHeight: '200px', overflow: 'auto' }"
      auto-height="true"
    ></textarea>
    
  4. 使用 uni-apppage 样式: 你可以尝试在 page 样式中设置 overflow: auto,以确保整个页面可以滚动。

    page {
      overflow: auto;
    }
回到顶部