监听键盘实时弹窗、收起状态,可以通过获取键盘高度的变化来判定,也可以通过监测当前窗口系统规避区域的变化,两种方式皆可;
监测键盘高度变化
/**
* 监听键盘显示或隐藏状态
* state : 0 收起 & 1 弹出 & 2 变更
* keyboardHeight : 键盘高度 number
* V3.4.62
* 20250306
* */
static listenKeyboardState() {
console.info('[事件监听] - 键盘');
/**
* 通过 window 模块的 on('keyboardHeightChange')方法
* 监听软键盘高度变化,实时获取软键盘高度,默认初始隐藏状态为 0
* */
let keyboardHeight: number = 0; // 软键盘高度
window.getLastWindow(getContext(_this)).then(currentWindow => {
currentWindow.on('keyboardHeightChange', (data: number) => {
keyboardHeight = px2vp(data);
console.info(`[事件监听] - 键盘 - 高度: ${keyboardHeight}`);
if (0 == keyboardHeight) {
console.info('[事件监听] - 键盘 - 收起');
// 通知对应模块业务当前状态
EmitterCenter.shareInstance().post(EmitterKey.Emitter_KeyboardChangeState, new Object({
state: '0',
keyboardHeight: keyboardHeight,
}));
} else {
console.info('[事件监听] - 键盘 - 弹出');
// 通知对应模块业务当前状态
EmitterCenter.shareInstance().post(EmitterKey.Emitter_KeyboardChangeState, new Object({
state: '1',
keyboardHeight: keyboardHeight,
}));
}
});
});
}
监测窗口系统规避去变化
/**
* 监听键盘显示或隐藏状态
* state : 0 收起 & 1 弹出 & 2 变更
* keyboardHeight : 键盘高度 number
* V3.4.62
* 20250306
* */
static listenKeyboardState() {
console.info('[事件监听] - 键盘');
/**
* 通过 window 模块的 on('avoidAreaChange')方式
* 开启当前窗口系统规避区变化的监听,获取内容可视区域大小;
* 以此来监听软键盘弹出与收起状态.
* */
let screenHeight: number = 0; // 安全区域高度
let isKeyBoardHidden: boolean = false; // 软键盘是否隐藏
window.getLastWindow(getContext(_this)).then(currentWindow => {
let property = currentWindow.getWindowProperties();
let avoidArea = currentWindow.getWindowAvoidArea(window.AvoidAreaType.TYPE_KEYBOARD);
// 初始化显示区域高度
screenHeight = px2vp(property.windowRect.height - avoidArea.topRect.height - avoidArea.bottomRect.height);
// 开启当前窗口系统规避区变化的监听
currentWindow.on('avoidAreaChange', data => {
if (data.type !== window.AvoidAreaType.TYPE_KEYBOARD) {
return;
}
if (0 >= data.area.bottomRect.height) {
isKeyBoardHidden = true;
console.info('[事件监听] - 键盘 - 隐藏');
} else {
isKeyBoardHidden = false;
console.info('[事件监听] - 键盘 - 显示');
}
screenHeight = px2vp(property.windowRect.height - data.area.topRect.height - data.area.bottomRect.height);
console.info(`[事件监听] - Screen height: ${screenHeight}`);
});
});
}
以上便是此次分享的全部内容,希望能对大家有所帮助!