前一篇提到LongPressGesture的写法,需要补充说明下,一般线上文档的写法:

.gesture(
        LongPressGesture({ repeat: true })
          // 由于repeat设置为true,长按动作存在时会连续触发,触发间隔为duration(默认值500ms)
          .onAction((event: GestureEvent) => {
            if (event && event.repeat) {
              this.count++
            }
          })
            // 长按动作一结束触发
          .onActionEnd((event: GestureEvent) => {
            this.count = 0
          })
        )

这是使用长按的repeat能力进行计数。

如果要通过长按触发弹窗,这个重复就不需要了。如果重复多次触发弹窗,可能会出现无法预期的结果。

只需要把repeat改为false就可以了。如下:

.gesture(
  LongPressGesture({ repeat: false })
    .onAction((event: GestureEvent) => {
......
      // 触发弹窗,或其他一次性处理
    })
    .onActionEnd(() => {
    })
)

这样的效果就是,长按元素到一定时间就会触发,即使一直按着不放也会触发,符合以往的用户习惯。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐