# uniapp 监听键盘高度 
在 UniApp 中监听键盘高度变化,可以通过 uni.onKeyboardHeightChange
方法实现。这个方法可以监听到键盘高度变化事件,包括键盘弹出和收起的状态。
以下是实现方案,你可以在页面的 onLoad
生命周期中注册监听器,并在 onUnload
中移除监听器,避免内存泄漏:
export default { data() { return { input_content: '', keyboardHeight: 0 // 用于存储键盘高度 } }, onLoad() { // 注册键盘高度变化监听 this.keyboardListener = uni.onKeyboardHeightChange(res => { console.log('键盘高度变化:', res) this.keyboardHeight = res.height // 可以在这里根据键盘高度做相应的界面调整 // 例如:如果高度大于0,说明键盘弹出;等于0,说明键盘收起 }) }, onUnload() { // 移除监听 if (this.keyboardListener) { uni.offKeyboardHeightChange(this.keyboardListener) } }, methods: { onClickChatSendInput() { // 发送逻辑 console.log('发送内容:', this.input_content) // 发送后可以清空输入框 this.input_content = '' } } }
✅ Copy success!
你的 input 组件已经设置了 :adjust-position="false"
,这会禁止页面自动上移,配合键盘高度监听,你可以手动控制页面元素的位置,比如让输入框始终保持在键盘上方:
.box-content-input { /* 可以根据实际需求调整样式 */ position: fixed; bottom: 0; left: 0; right: 0; /* 可以使用动态绑定的方式根据键盘高度调整bottom值 */ }
✅ Copy success!
如果需要在键盘弹出时调整输入框位置,可以使用动态样式绑定:
<input class="box-content-input" :style="{ bottom: keyboardHeight > 0 ? keyboardHeight + 'px' : '0' }" :adjust-position="false" confirm-type="send" type="text" placeholder="请输入内容" v-model="input_content" @confirm="onClickChatSendInput" />
✅ Copy success!
这样就能根据键盘的实时高度来调整输入框的位置,确保输入框不会被键盘遮挡。
✅ Copy success!