node._touchListener.setSwallowTouches无效了??

需求是这样的,我创建了一个pageview,在其中一个子页面上添加一个scrollview让其可以上下滚动,可是现在添加了scrollview之后,pageview无法左右切换页面了,scrollview把滑动事件吞噬了。
之后我设置了this.scrollview.node._touchListener.setSwallowTouches(false),并没有任何效果,
creator版本2.2.0,2.2.1

1赞

是因为引擎的scrollview这里是这样处理的

在scrollview的touch事件中调用了stopPropagation去停止事件的继续冒泡,因此父节点pageview无法接受到触摸事件

你需要针对这一块进行自己的引擎定制

ListView里面的富文本注册了点击事件 但是无法点击要怎么处理呢

楼主 解决了吗?

解决了,根据二楼说的,把圈出来的代码注释了,再自己自定义引擎

谢谢了,可以了

这个勾去掉不行吗?

楼主是怎么自定义的 ? 写了一个嵌套demo,效果类似 page无法滑动了,请教一下楼主

https://docs.cocos.com/creator/manual/zh/advanced-topics/engine-customization.html
参考这个文档,可以x修改引擎代码

重写了 _hasNestedViewGroup 的方法, 可以实现 pageview嵌套scollview 的左右滑动。 但是效果有点差,按下不松手滑动的时候,整个scallview 都在动 ,效果不太好 。。 请教群主是怎么改的。

看我上面的链接,根据文档定制 JavaScript 引擎,找到 engine\cocos2d\core\components\CCScrollView.js ,根据2楼说的,把所有的stopPropagation注释了,进行修改然后编译,文档说的很清楚,怎么弄

继承scrollview重写阻止冒泡方法不行吗
cc.Class({

extends: cc.ScrollView,

_stopPropagationIfTargetIsMe(event){

    

},

_onTouchEnded (event, captureListeners) {

    if (!this.enabledInHierarchy) return;

    if (this._hasNestedViewGroup(event, captureListeners)) return;

    this._dispatchEvent('touch-up');

    let touch = event.touch;

    if (this.content) {

        this._handleReleaseLogic(touch);

    }

},

})