uni-app 点击输入框调用系统软键盘先出灰色遮挡区域

uni-app 点击输入框调用系统软键盘先出灰色遮挡区域

操作步骤:

  • 点击输入框,调用系统软键盘,先顶出来一块儿灰色区域,遮挡住了页面

预期结果:

  • 点击输入框,调用系统软键盘,正常显示即可

实际结果:

  • 点击输入框,调用系统软键盘,先顶出来一块儿灰色区域,遮挡住了页面

bug描述:

  • 点击输入框,调用系统软键盘,先顶出来一块儿灰色区域,遮挡住了页面,H5页面访问没问题,打包发布后用APP 应用打开会出现此BUG

alt


| 信息类型   | 信息           |
|------------|----------------|
| 产品分类   | HTML5+         |
| 版本号     | 3.4.18         |
| 手机系统   | Android        |
| 系统版本号 | Android 13     |
| 手机厂商   | 小米           |
| 手机型号   | Redmi Note 11T Pro |
| 打包方式   | 云端           |
| 项目创建   | 未提及         |

更多关于uni-app 点击输入框调用系统软键盘先出灰色遮挡区域的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

请上传一个能重现问题的测试APP或测试工程

更多关于uni-app 点击输入框调用系统软键盘先出灰色遮挡区域的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在使用 uni-app 开发应用时,如果你遇到点击输入框调用系统软键盘时出现灰色遮挡区域的问题,这通常是由于布局或样式的问题导致的。以下是一些可能的解决方案:

1. 检查布局和样式

确保你的布局和样式没有导致输入框被遮挡。你可以尝试以下方法:

  • 检查 position 属性:确保输入框的父元素没有使用 position: fixedposition: absolute 等可能导致遮挡的属性。
  • 检查 z-index 属性:确保输入框的 z-index 值足够高,使其能够显示在遮挡层之上。
  • 检查 heightpadding:确保输入框的高度和填充不会导致内容被裁剪。

2. 使用 uni.onWindowResize 监听键盘弹出事件

你可以使用 uni.onWindowResize 监听键盘弹出事件,并在键盘弹出时调整布局,避免输入框被遮挡。

uni.onWindowResize((res) => {
  if (res.size.windowHeight < res.size.screenHeight) {
    // 键盘弹出,调整布局
    // 例如:将输入框向上移动
  } else {
    // 键盘收起,恢复布局
  }
});

3. 使用 uni.pageScrollTo 滚动页面

如果输入框位于页面底部,键盘弹出时可能会遮挡输入框。你可以使用 uni.pageScrollTo 将页面滚动到输入框的位置。

uni.pageScrollTo({
  scrollTop: 输入框的顶部位置,
  duration: 300
});

4. 使用 input 组件的 focus 事件

你可以在 input 组件的 focus 事件中调整布局或滚动页面,确保输入框不被遮挡。

<template>
  <input @focus="handleFocus" />
</template>

<script>
export default {
  methods: {
    handleFocus() {
      // 调整布局或滚动页面
      uni.pageScrollTo({
        scrollTop: 输入框的顶部位置,
        duration: 300
      });
    }
  }
}
</script>

5. 使用 uni-app 提供的 input 组件属性

uni-app 提供了一些 input 组件的属性,如 adjust-position,可以自动调整输入框位置以避免被键盘遮挡。

<template>
  <input adjust-position="true" />
</template>

6. 检查 manifest.json 配置

manifest.json 中,确保 app-plus 配置下的 softinputMode 设置为 adjustResizeadjustPan,以自动调整布局。

{
  "app-plus": {
    "softinputMode": "adjustResize"
  }
}

7. 使用 padding-bottommargin-bottom

在页面底部添加 padding-bottommargin-bottom,以确保输入框不会被键盘遮挡。

.page {
  padding-bottom: 300px; /* 根据键盘高度调整 */
}
回到顶部