HarmonyOS 鸿蒙Next 如何监听软键盘完全抬起?监听 TextInput 的 onEditChange 和 onFocus 都是抬起之前的,我需要监听完全抬起后如何操作?目前我只能直接等待 200 毫秒去假定软键盘完全抬起,但这么做不优雅。

HarmonyOS 鸿蒙Next 如何监听软键盘完全抬起?监听 TextInput 的 onEditChange 和 onFocus 都是抬起之前的,我需要监听完全抬起后如何操作?目前我只能直接等待 200 毫秒去假定软键盘完全抬起,但这么做不优雅。

如何监听软键盘完全抬起?监听 TextInput 的 onEditChange 和 onFocus 都是抬起之前的,我需要监听完全抬起后,如何操作?目前我只能直接等待 200 毫秒去假定软键盘完全抬起,但这么做不优雅。

2 回复

参考如下demo:

import window from '[@ohos](/user/ohos).window';

[@Entry](/user/Entry)
[@Component](/user/Component)
struct Demo {
[@State](/user/State) screenHeight: number = 0;

aboutToAppear() {
try {
window.getLastWindow(getContext(), (err, data) => {
if (err.code) {
console.info('tip', '获取顶部窗口错误' + JSON.stringify(err));
return;
}

let property = data.getWindowProperties(); // 获取当前窗口属性
this.screenHeight = px2vp(property.windowRect.height); // 初始化高度

try {
data.on('keyboardHeightChange', (data) => {
//这里的data就是键盘的高度,当不为0的时候表现为弹起,当收起时为0,可以判断data不为0来进行回调处理
console.info('tip', '成功监听到键盘高度变化. Data: ' + px2vp(data)); // 303.66 单位vp
this.screenHeight = px2vp(property.windowRect.height - data); // 可视化区域高度减去键盘高度
});
} catch (exception) {
console.info('tip', '监听键盘高度变化失败. Cause: ' + JSON.stringify(exception));
}
});
} catch (exception) {
console.info('tip', '获取顶部窗口错误' + JSON.stringify(exception));
}
}

build() {
Column() {
TextInput({ placeholder: '显示键盘的时候,我在上面的可视区域,我也是居中的' })
.onFocus(() => {
console.info('tip', 'TextInput触发onFocus方法');
})
}.width('100%')
.height(this.screenHeight)
.justifyContent(FlexAlign.Center)
}
}

更多关于HarmonyOS 鸿蒙Next 如何监听软键盘完全抬起?监听 TextInput 的 onEditChange 和 onFocus 都是抬起之前的,我需要监听完全抬起后如何操作?目前我只能直接等待 200 毫秒去假定软键盘完全抬起,但这么做不优雅。的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,监听软键盘完全抬起的事件确实不是直接通过TextInputonEditChangeonFocus来实现的。这些事件是在输入过程中或焦点变化时触发的,并不表示软键盘已经完全收起。

为了更精确地监听软键盘的完全抬起,你可以考虑使用系统提供的窗口焦点变化或输入法状态变化的监听机制。在鸿蒙系统中,通常可以通过监听窗口的onWindowFocusChanged或类似事件来捕捉软键盘的显示和隐藏状态。然而,具体的API和方法可能会因鸿蒙系统的版本和具体实现而有所不同。

另一种可能的方法是使用定时器结合输入框的焦点状态来判断。当输入框失去焦点时,启动一个定时器,并在一定时间后检查软键盘是否确实已经收起。这种方法虽然不如直接监听事件优雅,但在没有更直接的API时,可以作为一种可行的替代方案。

请注意,鸿蒙系统的API和框架可能会持续更新和优化,建议查阅最新的官方文档或开发者指南以获取最准确的信息。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!