巷子
巷子
  • 发布:2026-06-12 09:27
  • 更新:2026-06-12 09:28
  • 阅读:17

【报Bug】鸿蒙texarea的@focus返回的detail.height为0

分类:鸿蒙Next

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: mac26

HBuilderX类型: 正式

HBuilderX版本号: 5.07

手机系统: HarmonyOS NEXT

手机系统版本号: HarmonyOS 6.0.0

手机厂商: 华为

手机机型: nova14

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

<template>
<textarea
@input="handleInput"
@blur="handleBlur"
@focus="onFocus"
@confirm="onConfirm"
@keyboardheightchange="keyboardheightchange"
/>
</template>

<script>

export default {

methods: {  

    handleBlur(e) {  

    },  
    onFocus(e) {  
         console.error(e,"onFocus")  
    },  
    onConfirm(e) {  
    },  
    onClear(e) {  
    },  
    keyboardheightchange(e){  
        console.error(e,"keyboardheightchange")  
    }  
}  

};
</script>

操作步骤:

<template>
<textarea
@input="handleInput"
@blur="handleBlur"
@focus="onFocus"
@confirm="onConfirm"
@keyboardheightchange="keyboardheightchange"
/>
</template>

<script>

export default {

methods: {  

    handleBlur(e) {  

    },  
    onFocus(e) {  
         console.error(e,"onFocus")  
    },  
    onConfirm(e) {  
    },  
    onClear(e) {  
    },  
    keyboardheightchange(e){  
        console.error(e,"keyboardheightchange")  
    }  
}  

};
</script>

预期结果:

@focus 的detail.height存在值

实际结果:

@focus 的detail.height为0

bug描述:

texarea的@focus返回的detail.height为0,但是onKeyboardheightchange返回的却有值,文档没有明确说明鸿蒙不支持且有方法能返回

2026-06-12 09:27 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app鸿蒙化技术交流群 ) 咨询,群中有相关专业的管理员和群友。

针对这个 bug 反馈,我来做一个评审分析:


1. 反馈内容完整性评估

这个反馈整体结构比较清晰,但有几个地方需要补充和优化:

  • BUG 描述:描述较为清楚,指出了鸿蒙平台上 textarea 的 @focus 事件返回的 detail.height 为 0,而 @keyboardheightchange 事件能正常返回键盘高度。这是一个明确的问题陈述,官方人员能够理解。

  • 代码示例:代码示例重复了两次,且示例本身比较简单。虽然能够说明问题,但建议提供一个更完整的最小复现 demo,比如增加一些 console 输出对比两个事件返回值的差异,这样更直观。

  • 复现步骤:复现步骤直接粘贴了代码,没有用文字描述操作流程。应该改为类似"在鸿蒙真机上点击 textarea 输入框使其聚焦,观察 @focus 事件回调中的 detail.height 值"这样的描述。不过结合代码示例,官方人员基本可以复现。

  • 预期结果:预期 @focusdetail.height 存在值,这个预期是合理的。

  • 实际结果:实际结果为 0,描述清晰。

  • 分类信息:版本号、平台信息、设备信息都比较完整。HBuilderX 5.07 正式版,鸿蒙 NEXT 平台,HarmonyOS 6.0.0,这些信息都有助于定位问题。

总体评价:反馈基本完整,但复现步骤建议用文字描述而非直接贴代码,这样更规范。


2. Bug 是否成立分析

根据知识库中的文档,我找到了关键依据。

在 uniapp 官方文档的 textarea 组件说明中,@focus 事件的描述明确写了:

@focus | EventHandle | 输入框聚焦时触发,event.detail = { value, height },height 为键盘高度 | 仅微信小程序、京东小程序、App(HBuilderX 2.0+ nvue uni-app模式) 、QQ小程序支持 height

官方文档链接

这个文档明确列出了 height 参数的平台支持范围:微信小程序、京东小程序、App(nvue uni-app模式)、QQ小程序。鸿蒙(HarmonyOS NEXT)平台并未出现在支持列表中。

因此,这个 bug 反馈实际上是一个平台兼容性问题,而非真正的 bug。鸿蒙平台目前 @focus 事件的 detail.height 返回 0 是符合文档预期的,因为文档中并未声明鸿蒙平台支持该特性。


3. 替代方案建议

既然 @focus 在鸿蒙上无法获取键盘高度,但用户反馈中提到 @keyboardheightchange 事件在鸿蒙上是可以正常返回键盘高度的,那么可以考虑以下替代方案:

  • 使用 @keyboardheightchange 事件来监听键盘高度的变化,这是鸿蒙平台上获取键盘高度的正确方式。该事件在键盘高度发生变化时触发,event.detail = {height: height, duration: duration}

示例调整:

keyboardheightchange(e){  
    console.log("键盘高度:", e.detail.height); // 在鸿蒙上能正常获取  
    // 可以在这里处理键盘弹出后的页面布局调整  
}

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

  • 如果需要在 focus 时立即获取键盘高度,可以在 @focus 中设置一个标志位,然后结合 @keyboardheightchange 来获取首次弹出的键盘高度。

总结

这个反馈属于平台兼容性范畴,文档已明确说明 @focusheight 参数不支持鸿蒙平台。建议用户改用 @keyboardheightchange 事件来获取键盘高度,该事件在鸿蒙上已验证可用。如果希望鸿蒙平台也支持 @focus 返回键盘高度,可以将其作为功能需求提交,而非 bug 反馈。

内容为 AI 生成,仅供参考

要回复问题请先登录注册