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

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

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

HarmonyOS
2024-05-26 11:12:00
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
blue76

使用的核心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
相关问题
如何主动拉起软键盘,你知道吗?
837浏览 • 1回复 待解决
如何判断软键盘是否弹出
642浏览 • 1回复 待解决
关于软键盘弹出遮挡问题
365浏览 • 1回复 待解决
如何控制软键盘弹出对页面的遮挡?
1381浏览 • 1回复 待解决
键盘弹出时,页面的自适应
402浏览 • 1回复 待解决
鸿蒙软键盘弹出后,页面底部的按钮
2802浏览 • 0回复 待解决
有谁知道如何主动关闭应用
609浏览 • 1回复 待解决
鸿蒙JS 框架中如何主动切换横竖屏?
3456浏览 • 1回复 待解决
在Stage模型下如何主动重新渲染UI
1518浏览 • 1回复 已解决