HarmonyOS 鸿蒙Next @ohos.window窗口监听到键盘弹出时为什么会重新走一遍aboutToAppear()
HarmonyOS 鸿蒙Next @ohos.window窗口监听到键盘弹出时为什么会重新走一遍aboutToAppear() 点击TextInput()组件, 弹出键盘时, screenHeight的值被刷新了, 但是监听键盘弹出的方法写在了aboutToAppear()中, 为什么键盘弹出的时候,会重新走到aboutToAppear中.
还有一个问题: 这个**try catch 写在什么场景下,作用是什么? **是因为返回的是Promise, 所以使用try catch吗 使用async await 可以吗 ,但是如下代码的.getLastWindow和.on返回的是void是空呀
import window from '[@ohos](/user/ohos).window';
@Entry
@Component
struct entry {
@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) => {
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: '显示键盘的时候,我在上面的可视区域,我也是居中的' })
}.width('100%').height(this.screenHeight).justifyContent(FlexAlign.Center)
}
}
更多关于HarmonyOS 鸿蒙Next @ohos.window窗口监听到键盘弹出时为什么会重新走一遍aboutToAppear()的实战教程也可以访问 https://www.itying.com/category-93-b0.html