Touchend or touchcancel失效

同时促发节点A的touchstart和节点B的Scrolling后,当手指在节点A区域内离开屏幕时,么有促发A的touchend

请详细描述一下节点树结构和节点类型,然后发一下重现代码,这样的描述不便于我们理解你的问题

参考CR的排行榜,手指触摸第一名的时候,促发’touchstart’,按住滑动屏幕,促发排行榜的scrolling事件,这时候松开手指,没有促发’touchend’ or ‘touchcancel’,节点数结构就是scv是父节点,然后scv.content里面有N个node(prefab),node监听了"touchstart",‘touchend’, ‘touchcancel’

我们设计的行为确实是这样的,在 ScrollView 中,一旦开始滑动操作,那么子节点的触摸操作就会被取消,这也是绝大多数 UI 系统的设计,你可以尝试一下打开微信,或者通讯录应用,在手指刚触到列表项的时候列表项会变色,但是一旦你开始拖拽,就会发现选中颜色被取消了,松开的话也不会出发选中列表项的操作。

触摸事件里面应该缺少一个事件吧,现在只有touchstart/move/end/cancel,没有一个事件是能够解决上述问题的,应该要添加一个事件用来监听触摸操作被取消吧

在拖拽事件中处理是不靠谱的

我的意思就是拖拽过程中压根不应该处理子节点的事件,在被取消的时候我们可以发送一个 touch cancel 事件,但是肯定不会在子节点上继续处理任何其他的事件

你的意思是说 这是引擎BUG,被取消的时候 没有发送出touchcancel事件么?

目前好像没有接口是可以捕获被取消这个事件吧

touchcancel 可以捕获取消事件,我检查了一下,我们目前针对 Button 做了 touchcancel 操作,但是并没有发新的 touch cancel 事件,这里我觉得可以优化一下

只button可以捕获touchcancel?node不行?

之前确实是这样,我刚刚已经完成了优化,下个版本就 ok 了,具体 PR 在

https://github.com/cocos-creator/engine/pull/973