PageView嵌套ScrowView如何设置可左右滑动?

需求:
PageView设置为左右翻页,每页里有一个多个ScrowView,ScrowView内容设置为上下滑动。当在ScrowView内左右滑动时,可触发PageView左右翻页。类似于皇室冲突:

当前的情况是,左右滑动ScrowView时,ScrowView自身上下滑动,但并没能触发PageView左右翻页。请教如何设置可实现左右滑动ScrowView时触发PageView左右翻页?

1赞

我也遇到了跟你同样的问题,关注中……

我的PageView设置为左右翻页(全屏的),而其中的每个pageview的页面又都有一个上下滚动的ScrollView。然后运行时,只能够上下滚动scrollview,却无法左右滑动pageview翻页。

本人使用的是cocos creator 1.3.3。

我现在用的是1.4.0的版本

自己顶一下,有解决过的给个思路。。。。

不爱上论坛 我解决了的

我是禁止掉 pageview滚动 用按钮来控制的

按钮控制的时候激活 滚动 然后又禁止

这个有必要吗?去掉这个操作会有什么问题???

1赞

这种做法没法达到皇室冲突的左右翻页效果
另外如果是按钮,应该不需要对页面进行禁止和激活操作呢

这个问题问的人也不少,目前是在 ScrollView 组件脚本里专门对嵌套时的拖拽进行了处理,你可以重写下面这个方法,来允许子节点约束框上的滑动时间传递到父节点:

https://github.com/cocos-creator/engine/blob/v1.4/cocos2d/core/components/CCScrollView.js#L880-L908

后续我们会研究如何更好的支持这种嵌套需求。

2赞

用的按钮 切换页面 左右滑动一开始就禁止的 不激活 按钮是不能滑动的

用的按钮 切换页面 左右滑动一开始就禁止的 不激活 按钮是不能滑动的 所以才要这样

你好,我也遇到这个问题来,请问怎么重写这个事件呢?

如何实现啊!

那个游戏叫皇室战争。。。。
其实这个你自己实现在拖动事件就很容易搞定了

这个改写了,没用

将 scrollview 和 pageView 的 js 代码弄出来,自己封装成另外两个组件。再到这两个组件里面改。
可以实现。

主要原因就是scrollview的事件吞掉pageview的事件导致pageview监听不到事件,按照我给的附件,放入scrollview的view节点,。然后自己的scrollview拖到脚本中就可以了,具体逻辑可以看看代码,主要思路就是在scrollview监听到这些事件之前拦截后自己分发,根据需求,看是要分发给scrollview还是pageview。

comp_scroll_recognition.js.zip (1.6 KB)

5赞

谢谢,不过已经用这个简单的方法实现了:

cc.Class({
    extends: cc.PageView,
    //this is for nested scrollview
    _hasNestedViewGroup: function (event, captureListeners) {
        if(event.eventPhase !== cc.Event.CAPTURING_PHASE) return;

        var touch = event.touch;
        if(!touch) return;
        var deltaMove = cc.pSub(touch.getLocation(), touch.getStartLocation());
        if (deltaMove.x > 7 || deltaMove.x < -7)
            return false;
       // if (deltaMove.y > 7 || deltaMove.y < -7)
       //     return false;
        if(captureListeners) {
            //captureListeners are arranged from child to parent
            for(var i = 0; i < captureListeners.length; ++i){
                var item = captureListeners[i];

                if(this.node === item) {
                    if(event.target.getComponent(cc.ViewGroup)) {
                        return true;
                    }
                    return false;
                }

                if(item.getComponent(cc.ViewGroup)) {
                    return true;
                }
            }
        }

        return false;
    },
});
1赞

刚需啊。元老

解决ScrollView嵌套问题的demo,欢迎 fork 和 star
https://github.com/NRatel/CCC-NestableScrollView

1赞