HarmonyOS 鸿蒙Next 长按、滑动或手指捏合结束后,都会收到onClick回调,这样设计合理吗?还是我设置的有问题?

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 长按、滑动或手指捏合结束后,都会收到onClick回调,这样设计合理吗?还是我设置的有问题?

鸿蒙UI组件,长按、滑动或手指捏合结束后,都会收到onClick回调  Android的onClick回调,只有在点击时才会触发,长按、滑动或手指捏合均不会触发。

iOS的UITapGestureRecognizer也只有在点击时才会触发,长按、滑动或手指捏合均不会触发。 

2 回复
测试没有问题
// xxx.ets
[@Entry](/user/Entry)
[@Component](/user/Component)
struct LongPressGestureExample {
  [@State](/user/State) count: number = 0
  build() {
    Column() {
      Text('LongPress onAction:' + this.count).fontSize(28)
        .onClick(()=>{
          console.log('触发了点击时间')
        })
          // 单指长按文本触发该手势事件
        .gesture(
          LongPressGesture({ repeat: true })
            // 由于repeat设置为true,长按动作存在时会连续触发,触发间隔为duration(默认值500ms)
            .onAction((event: GestureEvent) => {
              if (event && event.repeat) {
                this.count++
              }
            })
              // 长按动作一结束触发
            .onActionEnd((event: GestureEvent) => {
              this.count = 0
            })
        )
    }
    .height(200)
    .width(300)
    .padding(20)
    .border({ width: 3 })
    .margin(30)
  }
}
 

更多关于HarmonyOS 鸿蒙Next 长按、滑动或手指捏合结束后,都会收到onClick回调,这样设计合理吗?还是我设置的有问题?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,对于Next组件(假设这里指的是某种UI组件,如列表项、卡片等),长按、滑动或手指捏合等操作通常不会直接触发onClick回调。onClick回调一般设计用于处理用户的点击事件。

对于你描述的现象,即在这些手势操作结束后收到onClick回调,可能的原因包括但不限于:

  1. 事件冲突:可能你的组件或布局中同时监听了多种手势事件,而这些事件的处理逻辑在某些情况下导致了onClick的误触发。

  2. 手势识别逻辑:鸿蒙系统的手势识别机制可能在某些特定情况下,将非点击手势识别为点击,或者在手势结束后进行了额外的点击事件派发。

  3. 组件特性:某些自定义组件或第三方库可能在设计时就有这样的行为,即在手势操作后自动触发点击事件。

为了解决这个问题,你可以检查以下几点:

  • 确认是否有多余的手势监听器被添加到了组件上。
  • 查看组件的文档或源码,了解是否有相关的行为说明。
  • 尝试调整手势监听器的优先级或处理逻辑。

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

回到顶部