HarmonyOS 鸿蒙Next 某个组件有onClick、pan、tap、pin手势监听,如何通过条件来判断让某一个响应事件响应或者不响应

HarmonyOS 鸿蒙Next 某个组件有onClick、pan、tap、pin手势监听,如何通过条件来判断让某一个响应事件响应或者不响应 比如我现在有一个Text组件。text组件写了对onClick、pan、tap、pin手势监听,那么正常只要我点击、滑动、缩放都会有回调。

现在我需求是,在某些情况只触发某个或某几个事件的回调,其他事件不回调:

比如有一个标记flag,flag为0 仅onClick事件响应(是指这个回调可以触发,不响应是指回调不会触发),其他手势虽然写了回调但不会触发

比如有一个标记flag,flag为1 仅pan事件响应(是指这个回调可以触发,不响应是指回调不会触发),其他手势虽然写了回调但不会触发

比如有一个标记flag,flag为3 仅tap事件响应,其他手势虽然写了回调但不会触发

比如有一个标记flag,flag为4 仅tap和pin这两个事件响应,其他手势虽然写了回调但不会触发

上述所说的事件响应(是指这个回调可以触发,不响应是指回调不会触发,而不是在回调中return)


更多关于HarmonyOS 鸿蒙Next 某个组件有onClick、pan、tap、pin手势监听,如何通过条件来判断让某一个响应事件响应或者不响应的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

可以参考自定义手势绑定,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-gesture-customize-judge

demo如下:

Text('点我,触发事件')
  .onClick(() => {
    console.log('-----onClick')
  })
  .gesture(
    PanGesture(this.panOption)
      .onActionStart((event: GestureEvent) => {
        console.info(' Pan start')
      })
  )
  .gesture(
    PinchGesture({ fingers: 3 })
      .onActionStart((event: GestureEvent) => {
        console.info(' Pinch start')
      })
  )
  .gesture(
    TapGesture({ count: 2 })
      .onAction((event: GestureEvent) => {
        if (event) {
          this.value = JSON.stringify(event.fingerList[0])
          console.info('TapGesture start')
        }
      })
  )
  .onGestureJudgeBegin((gestureInfo: GestureInfo, event: BaseGestureEvent) => {
    // 自定义判定标准
    if (gestureInfo.type == GestureControl.GestureType.TAP_GESTURE && this.num == 1) {
      return GestureJudgeResult.CONTINUE;
    } else if (gestureInfo.type == GestureControl.GestureType.PAN_GESTURE && this.num == 2) {
      return GestureJudgeResult.CONTINUE;
    } else if (gestureInfo.type == GestureControl.GestureType.PINCH_GESTURE && this.num == 3) {
      return GestureJudgeResult.CONTINUE;
    } else if (gestureInfo.type == GestureControl.GestureType.CLICK && this.num == 4) {
      return GestureJudgeResult.CONTINUE;
    }
    return GestureJudgeResult.REJECT;
  })

更多关于HarmonyOS 鸿蒙Next 某个组件有onClick、pan、tap、pin手势监听,如何通过条件来判断让某一个响应事件响应或者不响应的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


gesture 里面给手势根据flag 给不行吗?

在HarmonyOS鸿蒙Next中,如果你希望根据特定条件来控制某个组件的onClick、pan、tap、pin等手势监听事件是否响应,可以通过在事件监听器内部添加条件判断来实现。具体步骤如下:

  1. 定义条件变量:在组件或页面的逻辑中定义一个变量,用于表示当前的条件状态。

  2. 修改事件监听器:在每个手势监听器内部,首先检查这个条件变量。如果条件满足,则执行正常的事件处理逻辑;如果不满足,则不执行或仅执行一些替代逻辑。

例如,对于onClick事件,你可以这样写:

component.onClick((event) => {
    if (condition) { // condition是你的条件变量
        // 执行点击事件的处理逻辑
    }
    // 如果不满足条件,则不执行任何操作或执行替代逻辑
});

对于pan、tap、pin等其他手势,处理方式类似,都是在事件监听器内部加入条件判断。

这种方法允许你根据应用的当前状态或用户交互的其他方面来灵活地控制手势事件的响应。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部