HarmonyOS Toggle组件怎么拦截?

在使用Toggle组件的时候,发现只有一个回调返回组件切换的结果,没法拦截。如果我们在Toggle处于on的状态下,点击切换时,弹出一个对话,在对话框处理完逻辑后,再决定Toggle是打开还是关闭,请问需要怎么处理?

HarmonyOS
2024-10-09 12:18:15
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

可以使用onTouchIntercept拦截事件,参考demo:

@Entry  
@Component  
struct Page240522215803016 {  
  @State message: string = 'Hello World';  
  @State isToggleOn: boolean = false  
  dialogController: CustomDialogController = new CustomDialogController({  
    builder: CustomDialogExample({  
      confirm: () => {  
        this.onAccept()  
      },  
    }),  
  })  
  onAccept() {  
    if (this.isToggleOn) {  
      this.isToggleOn = false  
    } else {  
      this.isToggleOn = true  
    }  
  }  
  build() {  
    RelativeContainer() {  
      Toggle({ type: ToggleType.Switch, isOn: this.isToggleOn })// 调用onTouchIntercept修改该组件的HitTestMode属性  
        .onTouchIntercept((event: TouchEvent) => {  
          console.log("OnTouchIntercept + " + JSON.stringify(event));  
          this.dialogController.open()  
          return HitTestMode.None  
        })  
        .onChange((isOn: boolean) => {  
          console.info("isOn:" + isOn)  
          if (isOn) {  
            // 需要执行的操作  
          }  
        })  
    }  
    .height('100%')  
    .width('100%')  
  }  
}  
@CustomDialog  
export struct CustomDialogExample {  
  controller: CustomDialogController = new CustomDialogController({  
    builder: CustomDialogExample({}),  
  })  
  confirm?: () => void  
  build() {  
    Column() {  
      Text('点击确认')  
        .fontSize(20)  
        .margin({ top: 10, bottom: 10 })  
        .onClick(() => {  
          this.controller.close()  
          if (this.confirm) {  
            this.confirm()  
          }  
        })  
    }  
  }  
}
分享
微博
QQ
微信
回复
2024-10-09 17:34:38
相关问题
HarmonyOS toggle 点击拦截
159浏览 • 1回复 待解决
HarmonyOS web组件怎么拦截请求
679浏览 • 1回复 待解决
HarmonyOS Toggle组件onChange方法手动触发
244浏览 • 1回复 待解决
HarmonyOS Toggle点击时要怎么关闭阴影
186浏览 • 1回复 待解决
HarmonyOS toggle组件是否支持完全受控
582浏览 • 0回复 待解决
HarmonyOS 怎么拦截返回键盘
472浏览 • 1回复 待解决
HarmonyOS 请问怎么拦截Tabs点击
98浏览 • 1回复 待解决
HarmonyOS Toggle问题
582浏览 • 0回复 待解决
HarmonyOS Web组件拦截返回按钮
197浏览 • 1回复 待解决
HarmonyOS Toggle 问题
113浏览 • 1回复 待解决
HarmonyOS UI组件事件拦截处理
454浏览 • 1回复 待解决
HarmonyOS Web对about:blank组件拦截
314浏览 • 1回复 待解决
HarmonyOS 全模态怎么拦截系统返回键
225浏览 • 1回复 待解决
HarmonyOS web组件拦截返回手势
80浏览 • 1回复 待解决
HarmonyOS组件如何拦截触摸事件
198浏览 • 1回复 待解决
HarmonyOS web组件关闭跨域拦截
74浏览 • 1回复 待解决
HarmonyOS Web组件实现异步的请求拦截
109浏览 • 1回复 待解决