1 问题描述

打开应用页面无法自动获取默认焦点,需要点击键盘Tab按键才可获取焦点,然后方向键才可以正常控制焦点移动。

2 开发环境

系统版本: OpenHarmony 4.1 release

DevEco Studio版本: OpenHarmony: DevEco Studio 4.1 Release(build: 4.1.0.400)

SDK版本: OpenHarmony: 4.1.7.8

3 解决方案

应用层在页面加载(onPageShow)时使用@ohos.multimodalInput.inputEventClient (输入事件注入)(系统接口)的inputEventClient.injectEvent接口,触发一次Tab点击事件,这样可以实现进入页面直接通过方向键控制焦点移动,不需要先点击Tab键才能通过方向键控制焦点移动,并且应用有多个页面存在时,只需要在入口页面的onPageShow方法中调用inputEventClient.injectEvent接口触发一次Tab点击事件即可,其他页面不用设置,参考代码如下:

class KeyEvent {
  KeyEvent: inputEventClient.KeyEvent | null = null
}

@Entry
@Component
struct Index {
  onPageShow(): void {
    this.tabClick()
  }

  tabClick(){
    let keyDownOpt: inputEventClient.KeyEvent = {
      isPressed: true,
      keyCode: KeyCode.KEYCODE_TAB,
      keyDownDuration:0,
      isIntercepted: false
    };
    let keyUpOpt: inputEventClient.KeyEvent = {
      isPressed: false,
      keyCode: KeyCode.KEYCODE_TAB,
      keyDownDuration:0,
      isIntercepted: false
    };
    let eventDown: KeyEvent = { KeyEvent: keyDownOpt }
    let eventUp: KeyEvent = { KeyEvent: keyUpOpt }

    try {
      // 触发tab点击,使默认焦点组件多态样式生效
      inputEventClient.injectEvent(eventDown);
      inputEventClient.injectEvent(eventUp);
    } catch (e) {

    }
  }

  build() {
    
  }
}

 

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐