HarmonyOS 鸿蒙Next 接上个帖子-添加了手势长按识别,但是onActionEnd后的值传出去了但是无效?
HarmonyOS 鸿蒙Next 接上个帖子-添加了手势长按识别,但是onActionEnd后的值传出去了但是无效?
代码目前的功能:去掉了下面scroll的滚动监听,只保留了上面的scroll可以控制下面的scroll和它滚动相同的距离!
为了防止长按上面的scroll同时,滑动下面的scroll,下面的scroll滚动!添加了长按手势 LongPressGesture
问题: ①长按上面scroll的同时,滑动下面的scroll,松开手指,下面的scroll不能滚动了! ②长按上面的scroll,三秒后,松开手指,下面的scroll可以正常滑动!
辛苦各位帮忙看看哪里出了问题!
@Entry @Component struct List_5 { private scrollerX: Scroller = new Scroller(); private scrollerY: Scroller = new Scroller(); private columns: string[] = [‘最新价’, ‘涨跌幅’, ‘涨跌额’, ‘涨速’, ‘量比’, ‘换手率’, ‘成交额’, ‘成交量’, ‘振幅’, ‘委比’, ‘现手’, ‘资金流向’, ‘昨收’, ‘开盘’, ‘最低’]; private flag: boolean = false @State isScrollX: ScrollDirection = ScrollDirection.Horizontal @State isScrollY: ScrollDirection = ScrollDirection.Horizontal
build() {
Column() {
Scroll(this.scrollerX) {
Row() {
ForEach(this.columns, (item, index) => {
Row() {
Text(${item}+${index}
).layoutWeight(1).textAlign(TextAlign.Center)
Blank()
Divider().vertical(true)
}.width(100)
})
}.height(150).backgroundColor(’#f05b72’)
}
.scrollable(this.isScrollX)
.scrollBar(BarState.Off)
.onTouch(() => this.flag = true)
.onScroll((x, y) => {
if (this.flag) this.scrollerY.scrollBy(x, y)
})
.gesture(
// 绑定可以重复触发的LongPressGesture
LongPressGesture({ repeat: false })
.onAction((event: GestureEvent) => {
this.isScrollY = ScrollDirection.None
})
.onActionEnd(() => {
this.isScrollY = ScrollDirection.Horizontal
console.info(‘tip’, 停止${this.isScrollY}
)
})
)
Blank().height(100)
Scroll(this.scrollerY) {
Row() {
ForEach(this.columns, (item, index) => {
Row() {
Text(`${item}+${index}`).layoutWeight(1).textAlign(TextAlign.Center)
Blank()
Divider().vertical(true)
}.width(100)
})
}.height(150).backgroundColor('#f05b72')
}
.scrollable(this.isScrollY)
.scrollBar(BarState.Off)
}
} }
更多关于HarmonyOS 鸿蒙Next 接上个帖子-添加了手势长按识别,但是onActionEnd后的值传出去了但是无效?的实战教程也可以访问 https://www.itying.com/category-93-b0.html
见上个帖子的回答!
更多关于HarmonyOS 鸿蒙Next 接上个帖子-添加了手势长按识别,但是onActionEnd后的值传出去了但是无效?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
滑动手势是监听不到的,而且就算监听到了,也能设置不可滚动,因为下面的列表是要跟随上面的一起滚动的
在HarmonyOS中,手势长按识别通过Gesture
API实现。onActionEnd
是手势识别结束时的回调函数,通常用于处理手势结束后的逻辑。如果onActionEnd
后的值传出去了但无效,可能原因如下:
-
回调函数未正确绑定:确保
onActionEnd
回调函数正确绑定到手势识别器上。例如:gesture.onActionEnd(() => { // 处理逻辑 });
-
值传递逻辑错误:检查
onActionEnd
回调函数中的值传递逻辑,确保值正确传递到目标位置。例如:gesture.onActionEnd(() => { let value = // 获取值 targetFunction(value); // 传递值 });
-
目标接收逻辑问题:确认目标接收逻辑正确处理传入的值。例如:
function targetFunction(value) { // 处理传入的值 }
-
生命周期问题:确保
onActionEnd
回调函数在组件生命周期内执行,避免组件已销毁时仍尝试传递值。 -
异步问题:如果值传递涉及异步操作,确保异步操作完成后再进行值传递。
检查以上几点,确保onActionEnd
后的值正确传递并生效。