uni-app plus 5+ keyboardchange 在 android 下不起作用

uni-app plus 5+ keyboardchange 在 android 下不起作用

| 开发环境 | 版本号 | 项目创建方式 |
|----------|--------|--------------|
| HBuilderX | 3.2.1  | -            |

产品分类:HTML5+

手机系统:Android

手机系统版本号:Android 11

手机厂商:小米

手机机型:Redmi 10X

打包方式:云端

示例代码:
    doc.addEventListener('keyboardchange', function(e) {  
        var height = e.height; // 键盘高度  
            JX.log('keyboardchange', 'ios 键盘显示 高度:' + height)  
        if (height > 0) {  
            keyboardIsOpen = true;  
            keyboardHeight = height;  
            settings.keyboardHeight = keyboardHeight;  
            app.setSettings(settings); //更新一下键盘高度  
        } else {  
            JX.log('keyboardchange', 'ios 键盘隐藏')  
            keyboardIsOpen = false  
        }  
    }, false);

操作步骤:
    doc.addEventListener('keyboardchange', function(e) {  
        var height = e.height; // 键盘高度  
            JX.log('keyboardchange', 'ios 键盘显示 高度:' + height)  
        if (height > 0) {  
            keyboardIsOpen = true;  
            keyboardHeight = height;  
            settings.keyboardHeight = keyboardHeight;  
            app.setSettings(settings); //更新一下键盘高度  
        } else {  
            JX.log('keyboardchange', 'ios 键盘隐藏')  
            keyboardIsOpen = false  
        }  
    }, false);

预期结果:
- 监听软键盘的显示与隐藏

实际结果:
- android 不起作用

bug描述:
- plus 5+ keyboardchange 在 android 下不起作用,ios 没事。

更多关于uni-app plus 5+ keyboardchange 在 android 下不起作用的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app plus 5+ keyboardchange 在 android 下不起作用的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在Android平台,keyboardchange事件确实存在兼容性问题。根据官方文档和社区反馈,这个事件在Android上通常无法正常触发,主要原因是Android系统本身没有提供统一的键盘高度变化监听API。

建议改用以下替代方案:

  1. 使用resize事件监听窗口变化
window.addEventListener('resize', function() {
    var windowHeight = window.innerHeight;
    // 通过窗口高度变化判断键盘状态
});
  1. 使用uni-app的页面生命周期: 在pages.json中配置:
{
    "path": "pages/xxx/xxx",
    "style": {
        "app-plus": {
            "softinputMode": "adjustResize"
        }
    }
}

然后在页面的onShowonHide中处理相关逻辑。

  1. 对于输入框焦点变化
// 监听输入框焦点事件
inputElement.addEventListener('focus', function() {
    // 键盘弹出处理
});
inputElement.addEventListener('blur', function() {
    // 键盘收起处理
});
回到顶部