Метод привязки жестов разработки приложений HarmonyOS/OpenHarmony (этапная модель)

Привязывая различные события жестов к каждому компоненту и разрабатывая метод ответа на событие, в случае успешного распознавания жестов платформа ArkUI уведомит компонент о результате распознавания жестов через обратные вызовы событий.
1. жест (традиционный метод привязки жестов)

..gesture(gesture: GestureType, mask?: GestureMask)

жест — это универсальный метод привязки жестов, который позволяет привязывать жесты к соответствующим компонентам.
Например, вы можете привязать жест TapGesture к компоненту Text с помощью метода привязки жеста.

// xxx.ets
@Entry
@Component
struct Index {
  build() {
    Column() {
      Text('Gesture').fontSize(28)
        // 采用gesture手势绑定方法绑定TapGesture
        .gesture(
          TapGesture()
            .onAction(() => {
              console.info('TapGesture is onAction');
            }))
    }
    .height(200)
    .width(250)
  }
}

2. PriorityGesture (метод привязки жестов с приоритетом)

undefined..priorityGesture(gesture: GestureType, mask?: GestureMask)。

PriorGesture — это метод привязки приоритетных жестов, который может привязывать жесты распознавания приоритета к компонентам.
По умолчанию, когда родительский компонент и дочерний компонент используют жест для привязки жеста одного и того же типа, дочерний компонент отдает приоритет распознаванию жеста, связанного с помощью жеста. Когда родительский компонент использует PriorityGesture для привязки жестов того же типа, что и дочерний компонент, родительский компонент отдает приоритет распознаванию жестов, связанных через PriorityGesture.
Например, когда родительский компонент Column и дочерний компонент Text одновременно привязаны к жесту TapGesture, а родительский компонент привязан в форме приоритетного жеста PriorityGesture, TapGesture, привязанный к родительскому компоненту, будет реагировать на первый.

// xxx.ets
@Entry
@Component
struct Index {
  build() {
    Column() {
      Text('Gesture').fontSize(28)
        .gesture(
          TapGesture()
            .onAction(() => {
              console.info('Text TapGesture is onAction');
            }))
    }
    .height(200)
    .width(250)
    // 设置为priorityGesture时,点击文本区域会忽略Text组件的TapGesture手势事件,优先响应父组件Column的TapGesture手势事件
    .priorityGesture(
      TapGesture()
        .onAction(() => {
          console.info('Column TapGesture is onAction');
        }), GestureMask.IgnoreInternal)
  }
}

3. ParallelGesture (метод привязки параллельных жестов)
...parallelGesture(gesture: GestureType, Mask?: GestureMask)
ParallelGesture — это метод привязки параллельных жестов, который может привязывать один и тот же жест, который может реагировать одновременно на родительский и дочерний компоненты.
По умолчанию события жестов не являются всплывающими событиями. Если один и тот же жест привязан к родительско-дочернему компоненту, события жестов, привязанные к родительско-дочернему компоненту, будут конкурировать. Максимум только одно событие жеста компонента может получить ответ. Когда родительский компонент привязан к параллельному жесту ParallelGesture, может быть запущено одно и то же событие жеста родительского и дочернего компонентов, достигая аналогичного эффекта всплеска.

// xxx.ets
@Entry
@Component
struct Index {
  build() {
    Column() {
      Text('Gesture').fontSize(28)
        .gesture(
          TapGesture()
            .onAction(() => {
              console.info('Text TapGesture is onAction');
            }))
    }
    .height(200)
    .width(250)
    // 设置为parallelGesture时,点击文本区域会同时响应父组件Column和子组件Text的TapGesture手势事件
    .parallelGesture(
      TapGesture()
        .onAction(() => {
          console.info('Column TapGesture is onAction');
        }), GestureMask.IgnoreInternal)
  }
}

Примечание. Если родительский и дочерний компоненты привязаны как к событию жеста щелчка, так и к событию жеста двойного щелчка, и родительский компонент, и дочерний компонент будут реагировать только на событие жеста щелчка.

Supongo que te gusta

Origin blog.csdn.net/weixin_69135651/article/details/132562556
Recomendado
Clasificación