当一个页面中有多个组件可以响应手势事件,在多个手指触控的情况下,多个组件可能会同时响应手势事件,从而导致业务异常。ArkUI提供了手势独占的属性monopolizeEvents,设置需要单独响应事件的组件的monopolizeEvents属性为true,可以解决这一问题。例如下面这个示例,给按钮Button1设置了.monopolizeEvents(true)之后,当手指首先触摸在Button1之后,在手指离开之前,其它组件的手势和事件都不会触发@Entry @Component struct GesturesConflictScene5 { @State message: string = 'Hello World'; build() { Column() { Row({ space: 20 }) { Button('Button1') .width(100) .height(40) .monopolizeEvents(true) Button('Button2') .width(200) .height(50) .onClick(() => { console.info('GesturesConflictScene5 Button2 click'); }) } .margin(20) Text(this.message) .margin(15) } .width('100%') .onDragStart(() => { console.info('GesturesConflictScene5 Drag start.'); }) .gesture( TapGesture({ count: 1 }) .onAction(() => { console.info('GesturesConflictScene5 TapGesture onAction.'); }), ) } }本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。
当一个页面中有多个组件可以响应手势事件,在多个手指触控的情况下,多个组件可能会同时响应手势事件,从而导致业务异常。ArkUI提供了手势独占的属性monopolizeEvents,设置需要单独响应事件的组件的monopolizeEvents属性为true,可以解决这一问题。例如下面这个示例,给按钮Button1设置了.monopolizeEvents(true)之后,当手指首先触摸在Button1之后,在手指离开之前,其它组件的手势和事件都不会触发
本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。