uni-app 无法隐藏 app 软键盘 注意是 app
uni-app 无法隐藏 app 软键盘 注意是 app
操作步骤:
- 无法隐藏 app 软键盘 你试试你们 【editor组件示例】App端的 软键盘会闪一下
预期结果:
- 可以自定义app软键盘的显示
实际结果:
- 没啥用你们的官方api
bug描述:
- App不支持默认隐藏手机自带的键盘, 无法自定义键盘, 相当于有任何与键盘绑定的操作都无法实现
包括你们官方的【app组件示例】也是同样存在一样的问题,从2020年到现在一直没有修复
信息类别 | 信息内容 |
---|---|
产品分类 | uniapp/App |
PC开发环境 | Windows |
PC开发环境版本 | 10.0.22631 |
HBuilderX类型 | 正式 |
HBuilderX版本 | 4.24 |
手机系统 | Android |
手机系统版本 | Android 15 |
手机厂商 | 华为 |
手机机型 | 任意机型都是 |
页面类型 | vue |
vue版本 | vue2 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
2 回复
uni.hideKeyboard()这个不管用吗?我就用的这个安卓ios都行啊
针对你提到的 uni-app
在 App 环境下无法隐藏软键盘的问题,这通常涉及到页面元素焦点管理、输入框处理或者系统级的键盘控制。在 uni-app
中,由于它支持多端开发(包括小程序、H5 和 App),一些解决方案可能在不同端表现不同。以下是一些在 App 端隐藏软键盘的常用方法,主要通过原生插件或自定义组件来实现。
方法一:使用原生插件(推荐)
uni-app
支持使用原生插件来扩展功能。你可以编写一个原生插件来控制键盘的显示和隐藏。以下是一个简单的原生插件示例(以 Android 为例):
1. 创建原生插件
在 native-plugins
目录下创建一个新的插件目录,比如 KeyboardManager
,然后在其中创建必要的文件,如 KeyboardManagerPlugin.java
。
// KeyboardManagerPlugin.java
package com.example.nativeplugins;
import android.app.Activity;
import android.inputmethodservice.InputMethodManager;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import io.dcloud.feature.uniapp.bridge.UniJSCallback;
import io.dcloud.feature.uniapp.common.UniModule;
public class KeyboardManagerPlugin extends UniModule {
public void hideKeyboard(UniJSCallback callback) {
Activity activity = getCurrentPage().getActivity();
View view = activity.getCurrentFocus();
if (view != null) {
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
callback.invoke();
}
}
2. 在 manifest.json
中注册插件
"nativePlugins": {
"KeyboardManager": {
"package": "com.example.nativeplugins.KeyboardManagerPlugin",
"methods": ["hideKeyboard"]
}
}
3. 在页面中使用插件
// pages/index/index.vue
export default {
methods: {
hideKeyboard() {
if (window.plus && plus.nativeObj) {
plus.nativeObj.invoke('KeyboardManager', 'hideKeyboard', (result) => {
console.log('Keyboard hidden');
});
}
}
}
}
方法二:使用自定义组件和事件处理
在某些情况下,你可能可以通过监听输入框的 blur
事件或自定义组件来尝试隐藏键盘,但这通常依赖于输入框失去焦点。如果直接隐藏键盘的需求较为特殊,推荐使用原生插件的方法。
总结
由于 uni-app
的跨平台特性,直接在框架层隐藏 App 端的软键盘可能并不总是有效。使用原生插件是一种更为可靠的方法,它可以直接与底层操作系统交互,实现键盘的显示和隐藏。上述代码提供了一个基本的框架,你可以根据需要进行扩展和优化。