HarmonyOS 鸿蒙Next 两个scroll互相监听滑动-可以控制屏幕只能单指操作吗?

HarmonyOS 鸿蒙Next 两个scroll互相监听滑动-可以控制屏幕只能单指操作吗? 如下图:

cke_790.png

左手的手指按住绿色区域时,右手的手指滑动蓝色区域,会导致,两个scroll的滑动距离不同步,怎么避免这个问题!

我的想法:控制屏幕只能单指操作!但是没找到相关的文档~

大家有什么办法解决这个问题吗~


更多关于HarmonyOS 鸿蒙Next 两个scroll互相监听滑动-可以控制屏幕只能单指操作吗?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

可以换一个方法来实现这种误差

onTouch和onScrollFrameBegin配合使用

按上边列表的时候把下边列表滑动禁用,抬起手指或者取消触摸时,下边列表再设置可以滑动,并且滑动距离跟随上边的列表一致,可以在onTouch中添加一个Move状态时,下边列表也可以滑动,这样可以实现两个手指操作,并且无冲突

【但是貌似有bug】

上边列表添加了移动时,下面的列表可以滑动,但是实际上,在我长按上边列表,另一个手滑动下边列表的时候也可以滑动,虽然两个列表是同步的,但是,不应该可以滑动啊?

更多关于HarmonyOS 鸿蒙Next 两个scroll互相监听滑动-可以控制屏幕只能单指操作吗?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


猜测是,
下面列表抬起的时候,使得up变为true,上面的列表就可以滚动,滚动就触发了上面列表的TouchType.Move,

在HarmonyOS中,可以通过ScrollView组件实现两个滚动视图的相互监听滑动。你可以在ScrollViewonScroll回调中获取滑动的偏移量,并通过设置另一个ScrollView的偏移量来实现同步滚动。

至于控制屏幕只能单指操作,可以通过在Gesture组件中设置GestureGroupmultiTouch属性为false来限制为单指操作。具体实现如下:

import { ScrollView, Gesture, GestureGroup } from 'ohos';

const scrollView1 = new ScrollView();
const scrollView2 = new ScrollView();

scrollView1.onScroll((offsetX, offsetY) => {
  scrollView2.scrollTo(offsetX, offsetY);
});

scrollView2.onScroll((offsetX, offsetY) => {
  scrollView1.scrollTo(offsetX, offsetY);
});

const gestureGroup = new GestureGroup();
gestureGroup.multiTouch = false;

const gesture = new Gesture();
gesture.addGestureGroup(gestureGroup);

scrollView1.addGesture(gesture);
scrollView2.addGesture(gesture);

通过上述代码,两个ScrollView可以互相监听滑动,并且屏幕操作被限制为单指。

回到顶部