【问题讨论】两个ScrollView的item相互拖动

写了一个小demo,功能就是把一个scrollview的item拖动到另一个scrollview里面去。
下面是大致的效果
(注意:因为是demo,所以item被拖动后,我没有真的去刷新scrollview里的item,只是加了句log显示拖动确实成功了)

这其中遇到了三个问题:
1.我本来希望被拖动的item创建出来后,scrollview就不要再随着触摸滑动了,但不知道怎么才能暂时屏蔽scrollview的触摸监听。
2.看控制台的打印,发现在onTouchMove中间总会夹着一个onTouchCancel,这是什么鬼情况。。。
3.当拖动距离比较小(确切的说应该是回到原item区域内)的时候松手,既不会触发end,也不会触发cancel,这又是为啥。。。

可能是我思路本来就是有问题的,所以具体逻辑不在这里细说了。
有其他更好的办法来实现这个效果的话,希望大佬们可以分享下自己的想法,不吝赐教。

demo源码在此:
Demo.zip (196.7 KB)

问题2多半是由于scrollview监听到滑动事件,导致卡牌本身的事件被打断了,这里问题不大,在此特性上保证逻辑没问题就行了

scrollview有个属性阿,滑动的时候取消子节点的触摸事件

你误会了,我不是要取消item的触摸事件,而是要在item的触摸事件里取消scrollview的触摸事件

当拖动item移动一定距离后,将scrollview组件enable设置为false,然后操作完设置回去

我试了一下你的方案,发现不行诶。。即使enable设置为false,还是能滑,设置active为false都没用:joy:

问题 1 :
你应该是通过 enabled = false 来禁用才对的,我测试来一下是正常的,下面是我修改的 demo,你试看看吧,目前我只禁用了 scrollViewL

Item.js.zip (1.4 KB)

问题 2 :

我这边测试是正常的,不会出现在 move 过程中出现 cancel

问题 3 :

节点出发 end 跟 cancel 是根据是否 hitTest 来觉得出发的,我这边是必定会显示的 end 或者 hitTest 其中一个的

官方回复,受宠若惊,感谢!