跳到主要内容

重新设置新焦点位置的场景

设计场景

当前焦点所在的控件消失或者隐藏后,需要重新设置新的焦点位置。一般情况下,新焦点应该在原控件位置的下一个控件上,不应该跳变到前面的控件。应用可以调用主动聚焦的接口对想要聚焦的组件进行主动聚焦。

主动聚焦接口相关参数说明

表1 EventInfo 说明

属性类型说明
typeEventType主动聚焦事件类型requestFocusForAccessibility
bundleNamestring目标应用名当前应用包名
triggerActionAction触发事件的Actionclick或其他都不会有任何影响
customIdstring组件idabc345

开发实例

import accessibility from '@ohos.accessibility';

@Entry
@Component
export struct Rule_2_1_12 {
title: string = 'Rule 2.1.12';
eventInfo: accessibility.EventInfo = ({
type: 'requestFocusForAccessibility',
bundleName: 'com.example.pagesrouter',
triggerAction: 'common',
customId: 'button1'
});

build() {
NavDestination() {
Column() {
Blank()
Button('button1')
.accessibilityText('点击聚焦到button2')
.align(Alignment.Center)
.fontSize(20)
.id('button1')
.onClick(() => {
this.eventInfo.customId = 'button2';
accessibility.sendAccessibilityEvent(this.eventInfo).then(() => {
console.info(`Succeeded in send event, eventInfo is ${JSON.stringify(this.eventInfo)}`);
});
})
Blank().height('10px')
Button('button2')
.accessibilityText('点击聚焦到button1')
.align(Alignment.Center)
.fontSize(20)
.id('button2')
.onClick(() => {
this.eventInfo.customId = 'button1';
accessibility.sendAccessibilityEvent(this.eventInfo).then(() => {
console.info(`Succeeded in send event, eventInfo is ${JSON.stringify(this.eventInfo)}`);
});
})
Blank()
}
.width('100%')
.height('100%')
}
.title(this.title)
}
}