pageview 嵌套 scrollview

你看一下 _captureListeners 报错的位置,是不是在 CCNode 的 _doDispatchEvent 中,如果是的话,看看源码是否有对 _captureListeners 进行不为 null 的判断。

我这边是有的,如果没有的话,可能要等新版本,新版本可能过年后才会出

我这边也看到有的

@Knox 老哥这就很尴尬了

只需要 pageview 嵌套 scrollview 吗?还需要做什么操作才会触发这个问题吗?如果可以的话,给个 demo 也行,这样比快速排查到问题

pageview重写

随意滑动就可以了…不是必现.

pageview 嵌套 scrollview

模拟器出现的概率会大一点…

你这里报错是 event.currentTarget = target; 这个行,然后 log 是打印了 _captureListeners 为 null ?

错误是这个

我这边测试了,不好重现你的问题都没报错,能否麻烦你给一个能重现的简单 demo 吗?

或者你调试看看,为什么 _captureListeners 是 undefined,按道理 undefined 是不会进入这个 if 判断的

我单独新建场景,测试也无法复现,所以很尴尬,可以告诉大概是什么东西有可能出错.我自己找找也行

估计target为undefined

目前最好的办法就是打断点调试,看看为什么 _captureListeners 为 undefined

或者官方有没有比较稳定的pageview 嵌套 scrollview有什么方案吗:grin:

目前没有,你看看论坛上有没有吧

去掉item上的button事件后基本不会复现,但是这个怎么处理呢?

居然还要为什么会触发该问题,才能知道如何修复,能否具体的描述一下呢?

呦。我的文章~~ 你把那个target 加多个非空判断 , 就暂时性忽略这个BUG。没多大影响。项目都上线跑了的

原函数cachedArray用函数外局部变量赋值,在嵌套调用时,会把记录状态抹掉,导致错误,改成cachedArray为函数内局部变量
`function _doDispatchEvent(owner, event) {
var target, i;
event.target = owner;

// Event.CAPTURING_PHASE

//修改这里
// _cachedArray.length = 0;
let cachedArray = [];`

提了一个 PR,修复这个问题:
https://github.com/cocos-creator/engine/pull/6816

1赞