uni-app 安卓平台 uni.onKeyboardHeightChange() 在自定义基座上不触发

发布于 1周前 作者 sinazl 来自 Uni-App

uni-app 安卓平台 uni.onKeyboardHeightChange() 在自定义基座上不触发

开发环境 版本号 项目创建方式
Windows 11 HBuilderX
uniapp/App
Vue vue3

示例代码:

uni.onKeyboardHeightChange(res => {
console.log(res)
if (res.height == 0) {
this.keyboardHeight = res.height
}
});

操作步骤:

uni.onKeyboardHeightChange(res => {
console.log(res)
if (res.height == 0) {
this.keyboardHeight = res.height
}
});

预期结果:

{"height":348}

实际结果:

bug描述:

安卓 uni.onKeyboardHeightChange() 自定义基座 不触发


3 回复

一样,遇到这个问题了。应该跟HbuilderX版本有关。。前面不小心给更新了,就坏了


uni-app 中,uni.onKeyboardHeightChange() 事件用于监听软键盘高度变化。然而,如果在自定义基座(自定义调试基座或发布后的安卓应用)上该事件没有触发,可能是由于多种原因导致的,比如基座版本问题、权限设置问题或是系统兼容性问题。以下是一个基础的代码示例,用于展示如何正确使用 uni.onKeyboardHeightChange(),以及一些可能的调试方法。

基础代码示例

首先,确保你在页面的 onLoadonReady 生命周期中注册了 uni.onKeyboardHeightChange() 事件:

export default {
  onLoad() {
    uni.onKeyboardHeightChange(res => {
      console.log('键盘高度变化:', res.height);
      // 你可以在这里根据键盘高度调整页面布局
    });
  },
  methods: {
    // 页面中的其他方法
    inputFocus() {
      uni.createSelectorQuery().select('#myInput').focus().exec();
    }
  }
}

在对应的 .vue 文件中,确保有一个输入框:

<template>
  <view>
    <input id="myInput" placeholder="点击我触发键盘" />
  </view>
</template>

调试建议

  1. 确认基座版本:确保你使用的自定义基座是最新的,或者至少是一个已知稳定的版本。

  2. 检查权限:在某些安卓设备上,应用可能需要特定的权限才能正确检测键盘高度变化。虽然通常不需要额外的权限声明,但值得检查应用的 AndroidManifest.xml 文件,确认没有遗漏。

  3. 系统兼容性:尝试在不同的安卓版本和设备上测试应用,以确认问题是否与特定系统或设备相关。

  4. 日志输出:增加更多的日志输出,尤其是在注册事件和触发键盘事件时,这有助于确定事件是否确实没有被触发。

  5. 代码审查:检查代码中是否有其他地方(如条件判断或错误处理)可能阻止了事件的正常注册或触发。

  6. 官方文档和社区:查阅最新的 uni-app 官方文档,看看是否有关于此问题的已知问题或更新。同时,参与社区讨论,看看其他开发者是否遇到了类似问题以及他们的解决方案。

如果以上步骤都无法解决问题,建议联系 uni-app 的技术支持或在相关开发者社区中寻求帮助。

回到顶部