鸿蒙两个Scroll互相监听彼此的滑动-卡顿问题

两个Scroll互相监听彼此的滑动-卡顿问题

①手指滑动 Scroll1

②触发 Scroll1 的 onScroll

③调用 scroller2.scrollBy 滑动 Scroll2

④触发 Scroll2 的 onScroll

⑤调用 scroller1.scrollBy 滑动 Scroll1

这里⑤又会触发②,会一直循环,导致爆栈,就是你上面发的报错 [Error message: Stack overflow!]

所以加个标记flag:

flag=true 代表手指在滑动 Scroll1,不用再用 scroller1.scrollBy 滑动 Scroll1 了;

flag=false 代表手指在滑动 Scroll2,不用再用 scroller2.scrollBy 滑动 Scroll2 了;

这个 flag 名字改为 isTouchScroll1OrScroll2 会更直观一点

scroller1: Scroller = new Scroller()
scroller2: Scroller = new Scroller()
flag = true


Scroll(this.scroller1) {}
.onTouch(() => this.flag = true)
.onScroll((x, y) => {
  if (this.flag) this.scroller2.scrollBy(x, y)
})

Scroll(this.scroller2) {}
.onTouch(() => this.flag = false)
.onScroll((x, y) => {
  if (!this.flag) this.scroller1.scrollBy(x, y)
})

完毕
来源:https://developer.huawei.com/consumer/cn/forum/topic/0202130590927173038?fid=0102683795438680754

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值