uniapp开发抖音小程序监听键盘弹起keyboardheightchange,并获取键盘高度
今天用 Uniapp 开发抖音小程序,有个核心需求:点击输入框时,键盘弹起后能自动 “顶起” 输入框,避免输入框被键盘遮挡。这就需要实时监听到键盘高度,再把高度设给输入框的样式 —— 说起来简单,实操时却踩了不少坑。
一开始想当然用了 Uniapp 的onKeyBoardHeightChange API,结果在抖音端根本没反应。查了下才知道,抖音小程序压根不支持这个接口,白忙活一场。
接着问 AI,得到的答案翻来覆去还是叫我用onKeyBoardHeightChange,看来它也没吃透抖音的特性。没办法,只能自己啃抖音小程序文档,还真发现 input 组件有个bindkeyboardheightchange事件,专门用来监听键盘高度变化 —— 本以为找到救星,结果直接用上去,事件死活不触发,又卡壳了。
那阵子真有点想放弃,去 GitHub 和 Uniapp 插件市场翻了个遍,也没找到能直接获取抖音键盘高度的第三方库。
最后抱着死马当活马医的心态,试了试在绑定bindkeyboardheightchange时,配合this.$nextTick延迟初始化 —— 没想到,成了!
关键代码(template 部分,重点看keyboardheightchange的绑定):
<!-- 核心是通过keyboardheightchange监听,配合nextTick确保事件能触发 --> <input v-model="inputVal" @keyboardheightchange="handleKeyboardHeightChange" placeholder="请输入内容" />
折腾了一圈才发现,抖音小程序的事件触发时机比较特殊,有时候确实需要用nextTick等 DOM 更新完再绑定,才能稳稳监听到键盘高度。总算解决了,记录一下免得下次再踩坑。
handleKeyboardChange(e) {
this.$nextTick(() => {
// console.log("弹起了!", e);
this.changeKeyBordHeight(e.detail.height) //键盘的高度就是e.detail.height,这里进行设置输入框的高度,函数自己实现即可
})
}
