请参考以下规避方案:@Entry @Component struct SliderPage { @State message: string = 'Hello World'; private blockSize: number = 16; @State offsetX1: number = 0 @State offsetX2: number = 0 @State positionX1: number = 0 @State positionX2: number = 300 @State positionY: number = 0 build() { Column() { Stack(){ Row(){}.justifyContent(FlexAlign.Start).width(300).height(15).backgroundColor(Color.Grey) Stack(){}.width(this.blockSize).height(this.blockSize).backgroundColor(Color.Red).position({x:this.positionX1,y:this.positionY}) .gesture( PanGesture() .onActionStart((event: GestureEvent) => { console.info('Pan start') }) .onActionUpdate((event: GestureEvent) => { if (event) { if(this.offsetX1 + event.offsetX > this.positionX2 || this.offsetX1 + event.offsetX <= 0) { return; } else { this.positionX1 = this.offsetX1 + event.offsetX } } }) .onActionEnd(() => { this.offsetX1 = this.positionX1 console.info('Pan end') }) ) Stack().width(this.blockSize).height(this.blockSize).backgroundColor(Color.Blue).position({x:this.positionX2,y:this.positionY}) .gesture( PanGesture() .onActionStart((event: GestureEvent) => { console.info('Pan start') }) .onActionUpdate((event: GestureEvent) => { if (event) { if(this.offsetX2 + event.offsetX < this.positionX1 || this.offsetX2 + event.offsetX >= 300) { return; } else { this.positionX2 = this.offsetX2 + event.offsetX } } }) .onActionEnd(() => { this.offsetX2 = this.positionX2 console.info('Pan end') }) ) } } .height('100%') .width('100%') } }
请参考以下规避方案: