RichEditor组件中,如何在我点击换行后,光标往下移动两行 HarmonyOS 鸿蒙Next

RichEditor组件中,如何在我点击换行后,光标往下移动两行 HarmonyOS 鸿蒙Next 请帮我实现以下功能:

  1. 首行在没有输入内容时,不允许输入空格和换行

  2. 每次主动点击换行(除了在首行)后,光标往下移动两行 (主要是这个换行问题)

  3. 除首行外,当光标位于其他行时,在没有输入内容时,不允许输入空格,但是可以输入换行

4 回复

嘶,好像有效果!不知道和你的是不是一样的

@Entry
@Component
struct TestPage {
  controller: RichEditorController = new RichEditorController()
  options: RichEditorOptions = { controller: this.controller }

  build() {
    Column() {
      Column() {
        RichEditor(this.options)
          .onReady(() => {
            this.controller.addTextSpan('创建不使用属性字符串构建的RichEditor组件。', {
              style: {
                fontColor: Color.Black,
                fontSize: 15
              }
            })
          })

        Button('点击').onClick(() => {
          this.controller.addTextSpan(`

`, {
            style: {
              fontColor: Color.Black,
              fontSize: 15
            }
          })
        })
      }.width('100%')
    }.height('100%')
  }
}

更多关于RichEditor组件中,如何在我点击换行后,光标往下移动两行 HarmonyOS 鸿蒙Next的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


点击换行的时候,在后面加两个换行符试试呢

Text(`11
11`)

用的 RichEditorController 控制器中的 addTextSpan 方法添加的,但是没效果,

基本信息

添加换行符的方法,我试过了

在鸿蒙Next中,RichEditor组件默认情况下点击换行时光标会移动到下一行的开头。要实现点击换行后光标往下移动两行,可以通过监听换行事件并手动调整光标位置来实现。

首先,使用onKeyEvent监听键盘事件,判断是否为回车键(换行)。如果是回车键,则在换行后通过setSelection方法将光标移动到下一行的开头,再调用一次insertText插入一个空行,最后再使用setSelection将光标移动到新行的开头。

具体代码示例如下:

import { RichEditor, KeyEvent, KeyCode } from '@ohos.richtext';

let richEditor = new RichEditor();

richEditor.onKeyEvent((event: KeyEvent) => {
    if (event.keyCode === KeyCode.ENTER) {
        // 获取当前光标位置
        let currentPosition = richEditor.getSelectionStart();
        
        // 插入换行符
        richEditor.insertText(currentPosition, '\n');
        
        // 插入空行
        richEditor.insertText(currentPosition + 1, '\n');
        
        // 将光标移动到新行的开头
        richEditor.setSelection(currentPosition + 2);
    }
});

通过这种方式,可以在点击换行后使光标往下移动两行。

回到顶部