鸿蒙系统中 uni-app微信小程序在设置 hold-keyboard 为true的时候点击事件导致键盘回收
鸿蒙系统中 uni-app微信小程序在设置 hold-keyboard 为true的时候点击事件导致键盘回收
| 项目属性 | 值 |
|---|---|
| 产品分类 | uniapp/小程序/微信 |
| PC开发环境操作系统 | Windows |
| PC开发环境操作系统版本号 | Windows 11 家庭中文版, 版本号 25H2, 操作系统版本 26200.7462 |
| HBuilderX类型 | 正式 |
| HBuilderX版本号 | 4.87 |
| 第三方开发者工具版本号 | 1.06.2504060 |
| 基础库版本号 | 3.13.0 |
| 项目创建方式 | HBuilderX |
操作步骤:
如上设置是必现
预期结果:
鸿蒙在设置 hold-keyboard 为true的时候,点击事件不会导致键盘回收
实际结果:
鸿蒙在设置 hold-keyboard 为true的时候,点击事件导致键盘回收
bug描述:
<textarea v-bind:id="ELEMENT_IDS.TEXTAREA" v-if="!isVoiceInput" class="text-input" type="text" confirm-type="send" v-model="inputMessage" :style="textareaStyle"
@confirm="sendMessage" @focus="(event) => handleInputFocus(event)" @blur="(event) => handleInputBlur(event)" @input="handleInputChange" @linechange="(event) => handleLineChange(event)"
:placeholder="'请输入消息...'" :adjust-position="false" :focus="inputFocus" :auto-focus="inputFocus"
:hold-keyboard="true" :confirm-hold="true" :show-confirm-bar="false" :auto-height="true" :maxlength="maxInputLength"
:disable-default-padding="true" />
uniapp 开发的微信小程序, 鸿蒙系统下安装微信,并在微信中运行小程序。 输入框输入文本后,点击发送按钮(非键盘上的发送按钮), hold-keyboard 我明明设置了,分发键盘高度变化事件,高度: [number] 0, 键盘会收回,其他系统不会收回。
更多关于鸿蒙系统中 uni-app微信小程序在设置 hold-keyboard 为true的时候点击事件导致键盘回收的实战教程也可以访问 https://www.itying.com/category-93-b0.html
该bug反馈内容基本完整:标题清晰描述了鸿蒙系统下微信小程序的特定问题;代码示例完整展示了textarea组件配置,包含hold-keyboard等关键属性;复现步骤虽简略但可操作(输入后点击发送按钮);预期与实际结果对比明确;分类信息提供了HBuilderX 4.87版本和Windows环境。唯一不足是复现步骤可补充具体操作细节(如发送按钮实现方式),但不影响核心问题定位。
经核查知识库,bug成立依据充分:
hold-keyboard属性文档明确标注"微信小程序2.8.2+“支持,但未提及鸿蒙系统下微信环境的兼容性
知识库指出"如需禁止点击其他位置收起键盘…仅支持App、H5,其他平台可通过设置focus使输入框重新获取焦点”,暗示小程序平台存在限制
用户使用的HBuilderX 4.87高于鸿蒙支持要求的4.23版本,排除版本过低问题
特别要注意鸿蒙系统上运行的是微信小程序(非原生鸿蒙应用),其行为受微信基础库约束,而知识库显示该属性在标准微信小程序中应生效
此非概念性问题,而是典型的跨平台兼容性缺陷。建议用户尝试在发送按钮添加@touchend.prevent阻止默认行为(尽管知识库标注仅App/H5支持,但可验证效果),同时需确认微信基础库版本是否≥2.8.2。官方应重点测试鸿蒙设备微信环境对hold-keyboard的实现差异,参考文档软键盘相关说明。 内容为 AI 生成,仅供参考
更多关于鸿蒙系统中 uni-app微信小程序在设置 hold-keyboard 为true的时候点击事件导致键盘回收的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
同样的代码,试试原生微信小程序有没有这个问题
回复 9***@tmp.dcloud.io: 发一下你的uniapp代码和微信原生代码
微信原生也会出现问题
回复 9***@tmp.dcloud.io: 反馈到微信社区
这是一个已知的鸿蒙系统兼容性问题。在鸿蒙系统上,微信小程序底层对 hold-keyboard 属性的处理存在缺陷,当页面发生非键盘区域的点击事件时,系统会强制回收键盘,无视该属性的设置。
问题核心:
hold-keyboard="true" 的设计初衷是让输入框在失去焦点时(例如点击页面其他区域)保持键盘不收起,直到主动调用 blur 或切换到其他输入框。但在鸿蒙系统的微信环境中,该逻辑未能正确生效。
临时解决方案: 目前没有完美的配置项可以解决。一个可行的临时方案是:在点击发送按钮等操作时,通过代码逻辑保持输入框的焦点,并延迟处理发送动作,以规避键盘瞬间收起的问题。
示例代码思路:
// 发送按钮点击事件
async handleSendClick() {
// 1. 保持textarea焦点(如果已失去)
this.inputFocus = true;
await this.$nextTick(); // 等待焦点重新触发
// 2. 短暂延迟,确保键盘稳定
setTimeout(() => {
// 3. 执行实际的发送逻辑
this.sendMessage();
// 4. 可选:清空输入框但保持焦点
this.inputMessage = '';
}, 50);
}

