修复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('键盘高度变化事件名') 配对注销
相关推荐
雪芽蓝域zzs几秒前
第 5 节:Marker 点击弹出 InfoWindow 信息窗口
vue.js
大包子2 小时前
structuredClone vs lodash.cloneDeep:核心差异与选型指南
javascript·vue.js
雪芽蓝域zzs3 小时前
第 3 节:地图点击事件,点击获取经纬度
vue.js
WayneX3 小时前
开源 Vue 3 组件库 Morya UI:把组件、文档、AI 工具链一起做进一个包
前端·vue.js·前端框架
hai_android3 小时前
Chat 聊天模块功能总结
前端·javascript·vue.js
m0_587383004 小时前
深圳 24 小时自助健身房系统软件开发实战指南与案例解析
java·spring boot·小程序·架构·需求分析
志尊宝6 小时前
Vue3 零基础每日笔记(076):防抖节流的正确使用——搜索框、按钮防重复提交、滚动监听
javascript·vue.js·笔记
顽疲6 小时前
从零用 Java 实现小红书 SpringBoot Vue UniApp(23)笔记话题多对多:一条笔记进多个话题池
java·vue.js·spring boot
2501_915909066 小时前
iOS应用从开发到上架App Store的完整发布流程与步骤指南
android·ios·小程序·https·uni-app·webview