需求是这样的,我创建了一个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无法滑动了,请教一下楼主
重写了 _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);
}
},
})




