HarmonyOS LongPressGesture手势移动问题

LongPressGesture手势, 长按左右滑动, 其返回的offsetX并没有变化。

HarmonyOS
2024-09-29 11:55:03
9129浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
put_get

LongPressGesture(长按手势事件)主要是强调长按时间,不监听位置变化,可以使用PanGesture(拖动手势事件)或SwipeGesture(滑动事件)来替代,都可以监听位置。如果需要监听长按事件,那么组合手势使用也可以的。

以下是组合手势(长按+拖动)的demo:

@Entry  
@Component  
struct GestureGroupExample {  
  @State count: number = 0  
  @State offsetX: number = 0  
  @State offsetY: number = 0  
  @State positionX: number = 0  
  @State positionY: number = 0  
  @State borderStyles: BorderStyle = BorderStyle.Solid  
  build() {  
    Column() {  
      Text('sequence gesture\n' + 'LongPress onAction:' + this.count + '\nPanGesture offset:\nX: ' + this.offsetX + '\n' + 'Y: ' + this.offsetY)  
        .fontSize(15)  
    }  
    .height(150)  
    .width(200)  
    .padding(20)  
    .margin(20)  
    .border({ width: 3, style: this.borderStyles })  
    .gesture(  
      // 以下组合手势为顺序识别,当长按手势事件未正常触发时则不会触发拖动手势事件  
      GestureGroup(GestureMode.Sequence,  
        LongPressGesture({ repeat: true })  
          .onAction((event?: GestureEvent) => {  
            if (event && event.repeat) {  
              this.count++  
            }  
            console.info('LongPress onAction')  
          }),  
        PanGesture()  
          .onActionStart(() => {  
            this.borderStyles = BorderStyle.Dashed  
            console.info('pan start')  
          })  
          .onActionUpdate((event?: GestureEvent) => {  
            if (event) {  
              this.offsetX = this.positionX + event.offsetX  
              this.offsetY = this.positionY + event.offsetY  
            }  
            console.info('pan update')  
          })  
          .onActionEnd(() => {  
            this.borderStyles = BorderStyle.Solid  
            console.info('pan end')  
          })  
      )  
        .onCancel(() => {  
          console.info('sequence gesture canceled')  
        })  
    )  
  }  
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
分享
微博
QQ
微信
回复
2024-09-29 17:29:55
相关问题
HarmonyOS 子窗口是否可手势移动
613浏览 • 1回复 待解决
HarmonyOS动问题
601浏览 • 1回复 待解决
HarmonyOS bindSheet拖动问题
478浏览 • 1回复 待解决
HarmonyOS scroll滚动问题
700浏览 • 1回复 待解决
HarmonyOS 嵌套滑动问题
1082浏览 • 1回复 待解决
HarmonyOS Slider滑动问题
1222浏览 • 1回复 待解决
HarmonyOS list滑动问题
1462浏览 • 1回复 待解决
HarmonyOS scroll滑动问题
1115浏览 • 1回复 待解决
HarmonyOS 悬浮按钮拖动问题
1277浏览 • 1回复 待解决
HarmonyOS onToch事件滑动问题
629浏览 • 1回复 待解决
HarmonyOS Scroll组件滚动问题
1412浏览 • 1回复 待解决
HarmonyOS TextPickerDialog多级联动问题
607浏览 • 1回复 待解决
HarmonyOS Grid组件子项拖动问题
1000浏览 • 1回复 待解决
HarmonyOS移动问题
508浏览 • 1回复 待解决
HarmonyOS Scroll嵌套List的滑动问题
762浏览 • 1回复 待解决
HarmonyOS pan手势问题
447浏览 • 1回复 待解决
HarmonyOS 移动上XComponent注册问题
1239浏览 • 1回复 待解决
HarmonyOS 关于手势问题
731浏览 • 1回复 待解决
HarmonyOS 图片放大后的滚动联动问题
658浏览 • 1回复 待解决
TabContent内web组件滑动问题
799浏览 • 2回复 待解决
HarmonyOS grid里面的item支持拖动问题
690浏览 • 1回复 待解决