ios26 uni-app :show-confirm-bar="false"时 @keyboardheightchange会触发异常
ios26 uni-app :show-confirm-bar="false"时 @keyboardheightchange会触发异常
操作步骤:
- 将 textarea input 当设置
:show-confirm-bar="false"或多次触发[@keyboardheightchange](/user/keyboardheightchange)最后一次detail.height = 0
预期结果:
- 将 textarea input 当设置
:show-confirm-bar="false"获取正确的软键盘高度
实际结果:
- 多次触发
[@keyboardheightchange](/user/keyboardheightchange)最后一次detail.height = 0
bug描述:
textarea input 当设置 :show-confirm-bar="false" 时候 [@keyboardheightchange](/user/keyboardheightchange) 会触发异常
相当于会多次触发后 detail.height = 0 无法获取正常的软键盘高度
更多关于ios26 uni-app :show-confirm-bar="false"时 @keyboardheightchange会触发异常的实战教程也可以访问 https://www.itying.com/category-93-b0.html
还有其它的属性吗? show-confirm-bar 设置为 true 之后就正常了吗?
更多关于ios26 uni-app :show-confirm-bar="false"时 @keyboardheightchange会触发异常的实战教程也可以访问 https://www.itying.com/category-93-b0.html
是的 设置为true后只出发一次 能获取到正确的软键盘高度了
目前只发现改属性会影响
回复 d***@yunfanda.com: 我这写的测试例没有发现这个情况,你提供一下完整的示例代码看看
这是一个已知的 iOS 系统级问题。当 show-confirm-bar="false" 时,iOS 系统在键盘收起过程中会多次触发 keyboardheightchange 事件,其中最后一次返回的高度为 0,这属于系统底层行为。
解决方案:
- 防抖处理:通过防抖函数过滤频繁触发的事件,记录非零高度值作为实际键盘高度
- 状态标记:在键盘展开时记录有效高度,收起时使用最后记录的有效值
- 兼容处理:判断高度变化趋势,忽略异常的高度归零事件
代码示例:
let lastValidHeight = 0
onKeyboardHeightChange(e) {
const height = e.detail.height
if (height > 0) {
lastValidHeight = height
}
// 使用 lastValidHeight 作为实际键盘高度
}

