InputMethodController.on\('sendKeyboardStatus'\)无法监听键盘的显示隐藏事件?

按照官方文档样例通过InputMethodController订阅软键盘相关事件,回调无法被触发

官方样例如下:

try {
  inputMethodController.on('sendKeyboardStatus', (keyboardStatus: inputMethod.KeyboardStatus) => {
    console.log(`Succeeded in subscribing sendKeyboardStatus, keyboardStatus: ${keyboardStatus}`);
  });
} catch(err) {
  console.error(`Failed to subscribe sendKeyboardStatus: ${JSON.stringify(err)}`);
}

软键盘显示/隐藏时控制台无任何输出。

阅读 735
1 个回答

可选择以下任一方案:

方案一:

通过输入法框架模块(@ohos.inputMethod)来监听软键盘状态。

用InputMethodController实例的on(‘sendKeyboardStatus’)方法来监听,直接在inputMethodController.on(‘sendKeyboardStatus’, callback)的callback中处理。详细信息请参见:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-inputmethod-0000001774281542\#ZH-CN\_TOPIC\_0000001774281542\_\_onsendkeyboardstatus10

方案二:

通过窗口模块(@ohos.window)来监听软键盘状态。

用Window实例的on(‘keyboardHeightChange’)方法来监听软键盘高度,可以判断软键盘状态。

详细信息请参见:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-window-0000001820880785\#ZH-CN\_TOPIC\_0000001820880785\_\_onkeyboardheightchange7

示例代码如下:

let windowClass: window.Window | undefined = undefined;
try {
  window.getLastWindow(this.context, (err: BusinessError, data) => {
    const errCode: number = err.code;
    if (errCode) {
      console.error('Failed to obtain the top window. Cause: ' + JSON.stringify(err));
      return;
    }
    windowClass = data;
    console.info('Succeeded in obtaining the top window. Data: ' + JSON.stringify(data));

    windowClass.on('avoidAreaChange', (data) => {
      console.info('Succeeded in enabling the listener for system avoid area changes. type:' + JSON.stringify(data.type) + ', area: ' + JSON.stringify(data.area));
    });
  });
} catch (exception) {
  console.error('Failed to obtain the top window. Cause: ' + JSON.stringify(exception));
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进