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

回到顶部