HarmonyOS 鸿蒙Next 两个scroll互相监听滑动-可以控制屏幕只能单指操作吗?
HarmonyOS 鸿蒙Next 两个scroll互相监听滑动-可以控制屏幕只能单指操作吗? 如下图:
左手的手指按住绿色区域时,右手的手指滑动蓝色区域,会导致,两个scroll的滑动距离不同步,怎么避免这个问题!
我的想法:控制屏幕只能单指操作!但是没找到相关的文档~
大家有什么办法解决这个问题吗~
更多关于HarmonyOS 鸿蒙Next 两个scroll互相监听滑动-可以控制屏幕只能单指操作吗?的实战教程也可以访问 https://www.itying.com/category-93-b0.html
可以换一个方法来实现这种误差
onTouch和onScrollFrameBegin配合使用
按上边列表的时候把下边列表滑动禁用,抬起手指或者取消触摸时,下边列表再设置可以滑动,并且滑动距离跟随上边的列表一致,可以在onTouch中添加一个Move状态时,下边列表也可以滑动,这样可以实现两个手指操作,并且无冲突
【但是貌似有bug】
上边列表添加了移动时,下面的列表可以滑动,但是实际上,在我长按上边列表,另一个手滑动下边列表的时候也可以滑动,虽然两个列表是同步的,但是,不应该可以滑动啊?
更多关于HarmonyOS 鸿蒙Next 两个scroll互相监听滑动-可以控制屏幕只能单指操作吗?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
猜测是,
下面列表抬起的时候,使得up变为true,上面的列表就可以滚动,滚动就触发了上面列表的TouchType.Move,
在HarmonyOS中,可以通过ScrollView
组件实现两个滚动视图的相互监听滑动。你可以在ScrollView
的onScroll
回调中获取滑动的偏移量,并通过设置另一个ScrollView
的偏移量来实现同步滚动。
至于控制屏幕只能单指操作,可以通过在Gesture
组件中设置GestureGroup
的multiTouch
属性为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
可以互相监听滑动,并且屏幕操作被限制为单指。