HarmonyOS 在使用gesture 时 onActionEnd不回调?

当前页面状态栏已隐藏

将一个图片拖到最左上角,然后再进行向下拖动时,执行了onActionUpdate回调,但是不执行 onActionEnd回调,

如果图片起始位置不是最左上角,那拖动的时候会正常执行onActionUpdate回调和onActionEnd回调

请问起始位置在最左上角,为什么不执行 onActionEnd回调,怎么才能执行onActionEnd回调

阅读 432
1 个回答

参考文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-gestures-pangesture-V5\#pandirection%E6%9E%9A%E4%B8%BE%E8%AF%B4%E6%98%8E

您可以参考一下以下代码:

@Entry
@Component
struct PanGestureExample {
  @State offsetX: number = 0
  @State offsetY: number = 0
  @State positionX: number = 0
  @State positionY: number = 0
  private panOption: PanGestureOptions = new PanGestureOptions({ direction: PanDirection.Up | PanDirection.Down })

  build() {
    Column() {
      Column() {
        Text('PanGesture offset:\nX: ' + this.offsetX + '\n' + 'Y: ' + this.offsetY)
      }
      .height(100)
      .width(200)
      .padding(20)
      .backgroundColor(Color.Pink)
      .border({ width: 3 })
      .translate({ x: this.offsetX, y: this.offsetY, z: 0 }) // 以组件左上角为坐标原点进行移动
      // 上下拖动触发该手势事件
      .gesture(
        PanGesture(this.panOption)
          .onActionStart((event: GestureEvent) => {
            console.info('Pan1 start')
          })
          .onActionUpdate((event: GestureEvent) => {
            if (event) {
              this.offsetX = this.positionX + event.offsetX
              this.offsetY = this.positionY + event.offsetY
            }
          })
          .onActionEnd((event: GestureEvent) => {
            this.positionX = this.offsetX
            this.positionY = this.offsetY
            console.info('Pan1 end')
          })
      )

    }
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进