uni-app 报 Bug uni.onKeyboardHeightChange 中英文键盘切换时返回高度为0
uni-app 报 Bug uni.onKeyboardHeightChange 中英文键盘切换时返回高度为0
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | 18363.1198 | HBuilderX |
### 示例代码:
uni.onKeyboardHeightChange(res => { console.log(res) })
### 操作步骤:
uni.onKeyboardHeightChange(res => { console.log(res) })
### 预期结果:
应该正常输出键盘高度,之前的版本是中英文切换时键盘高度不会变化,现在是变为0了,无法使用
### 实际结果:
```
16:40:58.045 [Object] {"height":307} at pages/find/findMessage.vue:197
16:40:58.861 [Object] {"height":0} at pages/find/findMessage.vue:197
16:41:01.414 [Object] {"height":346} at pages/find/findMessage.vue:197
16:41:02.281 [Object] {"height":0} at pages/find/findMessage.vue:197
16:41:02.312 [Object] {"height":307} at pages/find/findMessage.vue:197
16:41:03.196 [Object] {"height":0} at pages/find/findMessage.vue:197
16:41:04.052 [Object] {"height":307} at pages/find/findMessage.vue:197
16:41:04.818 [Object] {"height":0} at pages/find/findMessage.vue:197
```
### bug描述:
在进入页面的created生命周期中监听键盘高度,设置input输入框底部距离,做吸底效果,
单模式使用无异常,切换中英文格式时监听键盘高度为0,
附件中的视频是APP运行视频,图片时Hbuilder控制台输出日志
(页面配置:softinputMode 为 adjustResize)
更多关于uni-app 报 Bug uni.onKeyboardHeightChange 中英文键盘切换时返回高度为0的实战教程也可以访问 https://www.itying.com/category-93-b0.html
用的什么输入法?使用的小米自带的搜狗测试没有发现此问题
更多关于uni-app 报 Bug uni.onKeyboardHeightChange 中英文键盘切换时返回高度为0的实战教程也可以访问 https://www.itying.com/category-93-b0.html
搜狗输入法。。。。。 好吧,切换回小米输入法后就正常了。。。兼容性问题?
回复 zhangyq: 个别输入法有兼容性问题,出现问题的是什么输入法?
回复 DCloud_UNI_LXH: 搜狗输入法
回复 DCloud_UNI_LXH: 之前用的是搜狗输入法,有问题 现在切换搜狗输入法小米版后正常
这是一个已知的 uni-app 键盘高度监听问题。在 Android 平台上,当输入法切换中英文模式时,系统会先收起当前键盘再弹出新键盘,导致 uni.onKeyboardHeightChange 监听到短暂的高度为0的情况。
从你的日志可以看出,键盘高度在 307 和 346 之间正常变化,但切换过程中出现了高度为0的瞬时状态。这是由于:
- 键盘切换时系统会先触发键盘收起事件(height: 0)
- 然后立即触发新键盘弹出事件(height: 新高度)
对于需要做输入框吸底效果的场景,建议在代码中加入防抖处理:
let keyboardTimer = null
uni.onKeyboardHeightChange(res => {
clearTimeout(keyboardTimer)
if (res.height === 0) {
// 如果是高度为0,延迟判断是否为真正的键盘收起
keyboardTimer = setTimeout(() => {
console.log('键盘已收起')
// 处理键盘收起逻辑
}, 100)
} else {
console.log('键盘高度:', res.height)
// 处理键盘弹出逻辑
}
})

