uni-app input组件在一些手机上输入字母时会被遮住一部分

uni-app input组件在一些手机上输入字母时会被遮住一部分

操作步骤:

  • input表单输入g、j、q、y字母

预期结果:

  • 不被遮挡

实际结果:

  • input表单在输入g、j、q、y字母被遮挡

bug描述:

  • input表单在输入g、j、q、y这几个字母会被遮住显示不全,目前在三星手机 Galaxy Note8 android 7.1.1上有出现,其他手机vivo v1921a(android 10)和华为 nova 8 Pro(2.0.0.230)测试不会,官方扩展插件forms也会出现;

图片

图片1 图片2

开发环境 版本号 项目创建方式
Windows win10 HBuilderX
Android 7.1.1
三星 Galaxy Note8
HBuilderX 3.3.11
vue vue2
7 回复

将input框调的高一点可以么?


跟高度没有关系,input框高度很高了

主要是,只有三星这样,没有三星设备

使用 Chrome 或者 Edge 审查(远程调试)一下页面

回复 1***@qq.com: 一样

在 uni-app 中使用 input 组件时,如果遇到在某些手机上输入字母时被遮住一部分的问题,通常是由于以下原因之一:

1. 键盘弹出导致布局挤压

在移动设备上,当键盘弹出时,可能会挤压页面布局,导致 input 组件被键盘遮挡。这种情况在 Android 设备上尤为常见。

解决方案:

  • 使用 adjust-position 属性:uni-app 的 input 组件提供了一个 adjust-position 属性,当键盘弹出时,页面会自动上移,避免 input 被遮挡。
    <input adjust-position="true" />
  • 手动调整布局:如果 adjust-position 属性无法完全解决问题,可以监听键盘弹出事件,手动调整页面布局。
    uni.onKeyboardHeightChange(res => {
      const keyboardHeight = res.height;
      // 根据键盘高度调整页面布局
    });

2. 字体大小或行高问题

如果 input 组件的字体大小或行高设置不当,可能会导致输入内容显示不全。

解决方案:

  • 调整字体大小和行高:确保 input 组件的字体大小和行高适合当前设备。
    input {
      font-size: 16px;
      line-height: 1.5;
    }

3. 输入框高度不足

如果 input 组件的高度设置过小,可能会导致输入内容显示不全。

解决方案:

  • 增加输入框高度:适当增加 input 组件的高度。
    input {
      height: 40px;
    }

4. 设备兼容性问题

某些设备可能存在兼容性问题,导致 input 组件显示异常。

解决方案:

  • 使用 textarea 替代 input:如果问题无法通过上述方法解决,可以尝试使用 textarea 组件替代 input 组件。
    <textarea auto-height="true"></textarea>

5. 使用 scroll-view 包裹 input

如果页面内容较多,可以使用 scroll-view 包裹 input 组件,确保键盘弹出时页面可以滚动。

解决方案:

<scroll-view scroll-y="true" style="height: 100vh;">
  <input />
</scroll-view>

6. 使用 focus 事件调整布局

input 组件获得焦点时,手动调整页面布局,确保 input 组件不被遮挡。

解决方案:

<input [@focus](/user/focus)="onInputFocus" />

methods: {
  onInputFocus() {
    // 手动调整页面布局
    uni.pageScrollTo({
      scrollTop: 100, // 根据实际情况调整
      duration: 300
    });
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!