HarmonyOS鸿蒙Next中窗口模式下RichEditor设置焦点后,怎么不会自动弹出软键盘

HarmonyOS鸿蒙Next中窗口模式下RichEditor设置焦点后,怎么不会自动弹出软键盘 RichEditor 在自由多窗模式下,通过按钮切换焦点,键盘没出来,代码如下

@Entry
@Component
struct Index {
    controller: RichEditorController = new RichEditorController()
    @State controllerIsEditing: boolean = false
    @Builder

    build() {
      Column() {
        Row() {
          Button("弹窗输入框").onClick(() => {
            focusControl.requestFocus("richEditor")
          })
            .padding(5)

        }
        RichEditor({ controller: this.controller })
          .key("richEditor")
          .onEditingChange((isEditing: boolean) => {
            console.log("Current Editing Status:" + isEditing)
          })
          .height(400)
          .borderWidth(1)
          .borderColor(Color.Red)
          .width("100%")
      }
  }
}

更多关于HarmonyOS鸿蒙Next中窗口模式下RichEditor设置焦点后,怎么不会自动弹出软键盘的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

窗口模式下,之前RichEditor在被动获焦时,默认不绑定并弹出键盘。最新的商用发布版本已经优化,被动获焦默认拉起键盘。升级版本后应该能解决问题。

如果要使用旧版本的系统,可以用如下规避方案,手动attach键盘:

import { inputMethod } from '@kit.IMEKit';

@Entry
@Component
struct Index {
  controller: RichEditorController = new RichEditorController()
  @State controllerIsEditing: boolean = false
  private inputController: inputMethod.InputMethodController = inputMethod.getController();
  @Builder

  build() {
    Column() {
      Row() {
        Button("弹窗输入框")
          .padding(5)
          .onClick(() => {
            this.attachAndListener(); // 点击控件
          })
      }
      RichEditor({ controller: this.controller })
        .key("richEditor")
        .onEditingChange((isEditing: boolean) => {
          console.log("Current Editing Status:" + isEditing)
        })
        .height(400)
        .borderWidth(1)
        .borderColor(Color.Red)
        .width("100%")
    }
  }

  async attachAndListener() { // 绑定和设置监听
    // focusControl.requestFocus('richEditor');
    await this.inputController.attach(true, {
      inputAttribute: {
        textInputType: inputMethod.TextInputType.TEXT,
        enterKeyType: inputMethod.EnterKeyType.SEARCH
      }
    });
  }
}

更多关于HarmonyOS鸿蒙Next中窗口模式下RichEditor设置焦点后,怎么不会自动弹出软键盘的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,窗口模式下RichEditor设置焦点后,软键盘不会自动弹出。这是因为窗口模式下,系统默认不会自动触发软键盘的显示。你可以通过调用InputMethodManagershowSoftInput方法,手动触发软键盘的弹出。确保在调用该方法时,RichEditor已经获得焦点。

在HarmonyOS Next中,RichEditor组件在窗口模式下需要手动触发软键盘显示。这是因为多窗口模式下系统不会自动处理输入法弹出逻辑。以下是解决方案:

  1. 使用TextInputController的showSoftKeyboard方法显式调用软键盘:
import { inputMethod } from '@ohos.inputmethod';

// 在按钮点击事件中添加:
Button("弹窗输入框").onClick(() => {
  focusControl.requestFocus("richEditor")
  inputMethod.getController().showSoftKeyboard()
})
  1. 确保RichEditor已正确设置输入类型:
RichEditor({ controller: this.controller })
  .inputMethodOptions({
    type: inputMethod.InputType.TEXT
  })
  1. 检查窗口焦点状态,确保窗口处于活动状态:
.onFocus(() => {
  inputMethod.getController().showSoftKeyboard()
})

如果仍然无效,请检查窗口模式是否允许输入法显示(窗口需要有INPUT_FOCUSABLE标志)。这个问题通常是由于多窗口模式下输入法管理策略导致的,需要显式调用API触发。

回到顶部