uni-app TypeError: uni.onKeyboardHeightChange is not a function

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

uni-app TypeError: uni.onKeyboardHeightChange is not a function

所有端好像都不能使用
TypeError: uni.onKeyboardHeightChange is not a function

都更新4.29版本了 啥时候更新这个问题呢?

1 回复

在uni-app开发中遇到TypeError: uni.onKeyboardHeightChange is not a function这类错误,通常意味着你尝试调用的API不存在或未被正确识别。uni-app是一个使用Vue.js开发所有前端应用的框架,它支持编译到iOS、Android、H5、以及各种小程序等多个平台。不过,需要注意的是,不同平台对API的支持情况可能有所不同。

uni.onKeyboardHeightChange这个API在uni-app的官方文档中并没有明确列出,这意味着它可能不是一个标准的uni-app API。如果你的目的是监听软键盘高度变化,你需要采取其他方式来实现这一功能,尤其是在不同的平台上。

解决方案示例

1. H5平台

在H5平台上,你可以通过监听windowresize事件来间接获取软键盘弹出和收起的状态,从而推算键盘高度。以下是一个简单的示例代码:

let keyboardHeight = 0;
window.addEventListener('resize', () => {
    const documentElement = document.documentElement;
    const clientHeight = documentElement.clientHeight;
    if (clientHeight < window.innerHeight) {
        // 键盘弹出
        keyboardHeight = window.innerHeight - clientHeight;
        console.log('键盘高度:', keyboardHeight);
    } else {
        // 键盘收起
        keyboardHeight = 0;
        console.log('键盘已收起');
    }
});

2. 小程序平台

在微信小程序中,你可以使用wx.onKeyboardHeightChange来监听键盘高度变化。虽然这不是uni-app的API,但如果你在编写特定平台(如微信小程序)的代码时,可以直接使用该平台的API。示例如下:

wx.onKeyboardHeightChange((res) => {
    console.log('键盘高度:', res.height);
});

注意:上述代码段专为微信小程序设计,直接在uni-app中使用会导致编译错误,因为uni-app不支持直接使用小程序的API,除非是在特定平台的条件编译中。

3. App平台

对于App平台(iOS和Android),你可能需要依赖原生插件或自定义原生模块来实现类似功能,因为Webview通常不提供直接访问软键盘高度的API。

总结

由于uni.onKeyboardHeightChange不是uni-app的官方API,你需要根据目标平台(H5、小程序、App等)采取不同的策略来实现键盘高度变化的监听。在H5中,可以通过监听resize事件来间接获取;在小程序中,可以直接使用平台提供的API;而在App中,则可能需要原生开发支持。

回到顶部