Toggle组件设置拖动的同时如何屏蔽其本身的点击手势
===========================

通过isDragging状态变量区分拖动与点击操作，在拖动过程中屏蔽toggleIsOn的状态变更，示例代码如下：

import { hilog } from '@kit.PerformanceAnalysisKit';


@Entry
@Component
struct ToggleDrag {
  @State offsetX: number = 0;
  @State offsetY: number = 0;
  @State positionX: number = 0;
  @State positionY: number = 0;
  @State toggleIsOn: boolean = true;
 _ // Marks whether the current drag state is used to block click events_
  private isDragging: boolean = false;


  build() {
    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center }) {
      Toggle({ type: ToggleType.Button, isOn: this.toggleIsOn }) {
        Text('Toggle')
      }
      .selectedColor(Color.Pink)
    _  // Onchange callback precedes onActionEnd_
      .onChange((isOn: boolean) => {
        hilog.info(0x0000, 'TOGGLE\_DRAG', 'xxx %{public}s', \`onClick Toggle, isOn: ${isOn}\`);
        console.info('isDragging======' + this.isDragging);
        if (isOn === this.toggleIsOn) {
          return;
        } else {
          this.toggleIsOn = isOn;
        }
        if (this.isDragging) {
          this.toggleIsOn = !this.toggleIsOn;
        }
      })
      .translate({ x: this.offsetX, y: this.offsetY })
      .gesture(
        PanGesture()
          .onActionStart(() => {
            this.isDragging = true;
          })
          .onActionUpdate((event: GestureEvent) => {
            this.offsetX = this.positionX + event.offsetX;
            this.offsetY = this.positionY + event.offsetY;
          })
          .onActionEnd(() => {
            this.positionX = this.offsetX;
            this.positionY = this.offsetY;
            this.isDragging = false;
          })
      )
    }
  }
}

效果图如下：

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/33/v3/YIW6nNZWTwKlZIHj_dhHDQ/zh-cn_image_0000002654835241.png?HW-CC-KV=V1&HW-CC-Date=20260709T133852Z&HW-CC-Expire=86400&HW-CC-Sign=B50367E9B6A087BA0F4F3A4F9FBA951999225C049D7D81DA6190C87B786D1F03)