HarmonyOS 鸿蒙Next 如何监听软键盘关闭

发布于 1周前 作者 songsunli 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 如何监听软键盘关闭

我现在通过点击页面上一个按钮。弹出dialog并且弹出软键盘 (因为dialog里用textInput)现在点击软键盘上右上角的箭头会直接关闭软键盘,但是dialog没有关闭,如何监听软键盘关闭 实现关闭弹框 

2 回复

监听软键盘的弹出/关闭,参考以下Demo:

import { inputMethod } from '[@kit](/user/kit).IMEKit';

import { BusinessError } from '[@kit](/user/kit).BasicServicesKit';

import { window } from '[@kit](/user/kit).ArkUI';

let windowClass: window.Window | undefined = undefined;

[@Entry](/user/Entry)

[@Component](/user/Component)

struct CountModifier {

  [@State](/user/State) count: number = 0;

  onPageShow(): void {

    console.log('11111')

    window.getLastWindow(getContext()).then(lastWindow => {

      lastWindow.on('keyboardHeightChange', (data) => {

        console.log(JSON.stringify(data))

        if (data > 0) {

        console.log('弹出软键盘')

      } else {

        console.log('收起软键盘')

      }

      })

    }).catch((err: BusinessError) => {

      console.error('Failed to enable the listener for keyboard height changes. Cause: ' + JSON.stringify(err));

    })

  }

  appearKeyBoard() {

    let inputMethodController = inputMethod.getController();

    try {

      let textConfig: inputMethod.TextConfig = {

        inputAttribute: {

          textInputType: 0,

          enterKeyType: 1

        }

      };

      inputMethodController.attach(true, textConfig, (err: BusinessError) => {

        if (err) {

          console.error(`Failed to attach: ${JSON.stringify(err)}`);

          return;

        }

        console.log('Succeeded in attaching the inputMethod.');

      });

    } catch(err) {

      console.error(`Failed to attach: ${JSON.stringify(err)}`);

    }

  }

  hiddenKeyBoard() {

    let inputMethodController = inputMethod.getController();

    inputMethodController.detach((err: BusinessError) => {

      if (err) {

        console.error(`Failed to detach: ${JSON.stringify(err)}`);

        return;

      }

      console.log('Succeeded in detaching inputMethod.');

    });

  }

  build() {

    Column() {

      Button('点击弹出软键盘')

        .onClick(() => {

          this.appearKeyBoard();

        })

      Text('--------------------')

      Button('点击关闭软键盘')

        .onClick(() => {

          this.hiddenKeyBoard();

        })

    }

  }

}

在HarmonyOS鸿蒙Next系统中,监听软键盘关闭事件可以通过多种方法实现。

一种方法是使用系统能力SystemCapability.MiscServices.InputMethodFramework提供的监听功能。你可以调用on('keyboardHide', callback)方法,其中callback是一个回调函数,当输入法软键盘隐藏时会被调用。这样,你就可以在callback函数中处理软键盘关闭后的逻辑。

另一种方法是通过监听窗口焦点变化或布局变化事件来间接判断软键盘是否关闭。例如,当软键盘关闭时,窗口焦点可能会发生变化,或者布局高度可能会恢复。你可以设置相应的监听器来捕捉这些变化,并据此判断软键盘的状态。

此外,还可以使用window.on('keyboardHeightChange')事件来监听键盘高度变化。当键盘隐藏时,返回的高度将为0。你可以根据这个事件来触发软键盘关闭后的相关逻辑。

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

回到顶部