修复IM完整版接入小程序后,聊天页面键盘弹起时,页面高度错误问题

修复方案(请按以下步骤实现)

第一步:MessageInput 组件修复
  1. 禁用原生键盘顶推 :在 <input> 上设置 :adjust-position="false",改为手动控制布局
  2. 监听键盘高度变化 :在组件 mounted / onMounted 中调用 uni.onKeyboardHeightChange
  3. 手动控制 paddingBottom :用一个响应式变量 keyboardHeight 存储键盘高度,在最外层容器上绑定动态样式:
  4. 键盘弹出时收起面板 :在键盘高度 > 0 时,设置 showMorePanel = false
  5. 跨组件通知消息列表 :在键盘高度 > 0 时,通过 uni.$emit('键盘高度变化事件名', height) 通知 MessageList 组件
  6. 组件销毁时清理监听 :在 beforeDestroy(Vue2)/ onUnmounted(Vue3)中调用 uni.offKeyboardHeightChange()
第二步:MessageList 组件修复
  1. 监听键盘事件 :在 mounted / onMounted 中使用 uni.$on('键盘高度变化事件名', callback) 监听
  2. 自动滚动到底部:收到键盘弹出事件后,调用 scrollToBottom
  3. 修复重复滚动不触发问题:如果使用 scroll-into-view,需要先将目标 ID 清空为 '',等 50ms 后再重新赋值目标消息 ID,确保相同值时也能触发滚动
  4. 组件销毁时清理 :在 beforeDestroy / onUnmounted 中调用 uni.$off('键盘高度变化事件名') 配对注销
相关推荐
parade岁月7 小时前
开源一个 Vue 3 Table:API 学 antdv、主题学 Nuxt UI
前端·vue.js
吹牛不交税8 小时前
tree-transfer-vue3 前端插件安装问题解决(--legacy-peer-deps)(其他插件可考虑)适用
前端·javascript·vue.js
杰建云1679 小时前
多商家入驻小程序平台怎么做
人工智能·小程序
漓漾li10 小时前
每日面试题(2026-05-15)- 前端
前端·vue.js·react.js
前端那点事10 小时前
告别低级冗余!10个前端原生高阶技巧,让代码更优雅、性能更出众
前端·vue.js
hexu_blog10 小时前
前端vue后端java如何实现证件照功能
前端·javascript·vue.js
Southern Wind10 小时前
谷记账——一个 Vue 3 批次记账 App
前端·javascript·vue.js
peepeeman12 小时前
vue组件透传
前端·javascript·vue.js
镜宇秋霖丶12 小时前
2026.5.12@霖宇博客制作中遇见的问题
前端·vue.js·elementui
Giggle121814 小时前
开发上门维修(家政)小程序系统的核心功能和便捷方案
大数据·小程序