uni-app ios下第一次进入输入框时输入框被软键盘遮挡 关闭后再进入则不会
uni-app ios下第一次进入输入框时输入框被软键盘遮挡 关闭后再进入则不会
操作步骤:
ios下第一次聚焦输入框,输入框会被软键盘遮挡,然后关闭软键盘之后在聚焦输入框就不会被软键盘遮挡了
预期结果:
预期结果我进入页面第一次聚焦输入框 输入框也不应该被软键盘遮挡
实际结果:
ios下第一次聚焦输入框,输入框会被软键盘遮挡,然后关闭软键盘之后在聚焦输入框就不会被软键盘遮挡了
bug描述:
<input cursor-spacing="10" :value="inputWord" class="input" type="text" @input="inputChange" @confirm="confirm" placeholder="不方便语音?输入想说的话试试">
ios下第一次聚焦输入框,输入框会被软键盘遮挡,然后关闭软键盘之后在聚焦输入框就不会被软键盘遮挡了,代码没有什么东西,解决方案可以设置adjustResize,但是会出现另外一个问题,所以我想问如果不加adjustResize,怎么去解决这种情况
附件
| 信息类别 | 信息内容 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境 | Windows |
| PC系统版本 | window10 |
| HBuilderX类型 | 正式 |
| HBuilderX版本 | 3.1.18 |
| 手机系统 | iOS |
| 手机系统版本 | IOS 14 |
| 手机厂商 | 苹果 |
| 手机机型 | 苹果12 系统14.3 |
| 页面类型 | vue |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
更多关于uni-app ios下第一次进入输入框时输入框被软键盘遮挡 关闭后再进入则不会的实战教程也可以访问 https://www.itying.com/category-93-b0.html
加adjustResize 则是没有顶起内容,我希望的是顶起内容 所以暂时没有加adjustResize
官方给的文档如下,但实际上我是ios才会出现这种情况
adjust-position Boolean true 键盘弹起时,是否自动上推页面 App-Android(vue 页面 softinputMode 为 adjustResize 时无效)、微信小程序、百度小程序、QQ小程序
更多关于uni-app ios下第一次进入输入框时输入框被软键盘遮挡 关闭后再进入则不会的实战教程也可以访问 https://www.itying.com/category-93-b0.html
上传一个完整的示例工程吧
这是一个iOS平台下常见的软键盘遮挡问题,主要原因是首次聚焦时页面布局计算不准确。
建议的解决方案:
- 使用
uni.pageScrollTo手动滚动
onFocus() {
setTimeout(() => {
uni.pageScrollTo({
scrollTop: 0,
duration: 0
})
}, 100)
}
- 调整输入框位置
给输入框添加
cursor-spacing属性,设置较大的间距值:
<input cursor-spacing="100" ...>
- 监听键盘高度变化
onLoad() {
uni.onKeyboardHeightChange(res => {
if (res.height > 0) {
// 键盘弹出时调整布局
}
})
}
- 使用
focus事件延迟处理
onFocus() {
setTimeout(() => {
this.$refs.input.scrollIntoView()
}, 300)
}

