RichEditor组件如何主动弹出键盘(包括光标),以及主动收起键盘

现在的场景就是点击按钮1让RichEditor编辑框主动获焦,拉起键盘并让光标闪动;以及点击按钮2让RichEditor编辑框失去焦点,且光标消失。由于目前RichEditor的控制器RichEditorController没有类似TextArea的stopEditing的功能,所以在RichEditor组件内的接口没法实现。

现提供一种解决方案:通过焦点控制模块focusControl来解决。

HarmonyOS
2024-05-26 11:12:00
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
踮脚在树梢上

使用的核心API

RichEditor焦点控制

核心代码解释

通过使用focusControl.requestFocus来主动让焦点转移至RichEditor组件上。再通过focusControl.requestFocus来控制一个宽高为0的Button,主动让焦点转移至这个Button上,从而收起键盘,若是开发者觉得凭空多出了一个无用的空组件,可直接将焦点转移至其他Button上(比如退出编辑态的那个按钮)。

import { promptAction } from '@kit.ArkUI' 
  
@Entry 
@Component 
struct JlrFocusTest { 
  controller: RichEditorController = new RichEditorController() 
  controller1: TextInputController = new TextInputController() 
  needFocusKey: string = 'RichEditor' 
  @State textFlag: string = "TextFlag"; 
  
  build() { 
    Column() { 
      RichEditor({ controller: this.controller }) 
        .key(this.needFocusKey) 
        .align(Alignment.TopStart) 
        .height(100) 
        .borderWidth(1) 
        .borderColor(Color.Red) 
        .width("100%") 
        .onPaste((event?: PasteEvent) => { 
        }) 
      Button('点我获取焦点').onClick((event: ClickEvent) => { 
        focusControl.requestFocus(this.needFocusKey) 
      }) 
      Button('点我失去焦点').onClick((event: ClickEvent) => { 
        focusControl.requestFocus('button') 
      }) 
      Button().width(0).height(0).key('button') 
    } 
    .width('100%') 
    .height('100%') 
  } 
}

实现效果

适配版本信息

SDK:4.1.5.6

IDE:DevEco Studio 4.1.1.500

分享
微博
QQ
微信
回复
2024-05-27 10:57:15
相关问题
HarmonyOS TextInput如何主动弹出键盘
215浏览 • 1回复 待解决
如何主动收起键盘
241浏览 • 1回复 待解决
怎么主动关闭键盘,有人知道吗?
323浏览 • 1回复 待解决
HarmonyOS如何收起键盘
311浏览 • 1回复 待解决
如何主动拉起软键盘,你知道吗?
2262浏览 • 1回复 待解决
HarmonyOS如何代码收起键盘
396浏览 • 1回复 待解决
HarmonyOS 如何监听键盘弹出收回?
243浏览 • 1回复 待解决
小程序输入法键盘光标问题
187浏览 • 1回复 待解决
如何判断软键盘是否弹出
1999浏览 • 1回复 待解决
设置键盘弹出内容上移
324浏览 • 1回复 待解决
HarmonyOS 如何代码控制软键盘弹出
332浏览 • 1回复 待解决
关于软键盘弹出遮挡问题
1074浏览 • 1回复 待解决