4.1Release应用层解决页面无法自动获取默认焦点问题
1 问题描述 打开应用页面无法自动获取默认焦点,需要点击键盘Tab按键才可获取焦点,然后方向键才可以正常控制焦点移动。 2 开发环境 系统版本:OpenHarmony 4.1release DevEco Studio版本:OpenHarmony: DevEco Studio 4.1 Release(build: 4.1.0.40
·
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() {
}
}
更多推荐
所有评论(0)