帖子
帖子
用户
博客
课程
12下一页
返回列表 发新帖
显示全部楼层
24
帖子
1
勋章
27
Y币

swiper滑动与下拉刷新冲突

[复制链接]
发表于 2020-1-17 14:26:40
本帖最后由 夏雪冬花 于 2020-1-19 11:34 编辑

swiper4.x 滑动的时候与下拉刷新冲突。

问题:侧滑的时候,触发下拉刷新;下拉刷新的时候触发侧滑。有点像四匹马往四个方向跑的感觉。

解决思路:滑动时,禁止页面弹动。

解决方案:初始化swiper时,加入sliderMove和touchEnd方法。
即:

       sliderMove: function(swiper) {
            api.setFrameAttr({
                name: api.frameName,
                bounces: false
            });
        },
        touchEnd: function(swiper) {
            api.setFrameAttr({
                name: api.frameName,
                bounces: true
            });
        }


后某大佬发现,swiper4.x sliderMove的move效果处理比touchMove效果要好,后改正sliderMove。


19
帖子
3
勋章
1万+
Y币
嗯嗯
37
帖子
2
勋章
3711
Y币
get到了
24
帖子
1
勋章
27
Y币
0.0  帖子,我编辑了下,怎么发现不是分享贴子了  0.0
24
帖子
1
勋章
27
Y币
懵逼~   分享技巧帖子。。。发生改变了,变成问题帖子了。。。emmmmm,怎么改回去。。。。
9
帖子
0
勋章
5634
Y币
感谢分享 帮你改成分享帖了
24
帖子
1
勋章
27
Y币
马浩川 发表于 2020-1-19 11:44
感谢分享 帮你改成分享帖了

谢谢。下次我直接帖子后追加了。。
112
帖子
2
勋章
1597
Y币
试了一下sliderMove和touchStart好像都可以,感觉上没区别诶
24
帖子
1
勋章
27
Y币
3331123 发表于 2020-1-19 16:01
试了一下sliderMove和touchStart好像都可以,感觉上没区别诶

我这里,touchStart 会导致无法下拉刷新。
32
帖子
0
勋章
2032
Y币
本帖最后由 狂梦 于 2021-9-13 17:32 编辑

对版主的方案优化下,为了防止滑动结束后马上改为可弹动,导致依然存在“本是要滑轮播图,却触发的下拉刷新,导致轮播图滑动体验卡顿”,这里加了延时,又为了防止延时触发跑到下一次sliderMove后执行导致sliderMove的设定时效,sliderMove这里每次要销毁下延时。
   var touchEndtimer;
    var swiper = new Swiper('.swiper-container', {
        loop: true,
        autoplay: true,
        on: {
            sliderMove: function(swiper) {
                clearTimeout(touchEndtimer);
                api.setFrameAttr({
                    name: api.frameName, //KM++ 解决下拉跟轮播图滑动冲突
                    bounces: false
                });
            },
            touchEnd: function(swiper) {
                touchEndtimer = setTimeout(function() {
                    api.setFrameAttr({
                        name: api.frameName, //KM++ 解决下拉跟轮播图滑动冲突
                        bounces: true
                    });
                }, 3000); //轮播图滑动后,3秒内不可下拉
            }
        },

    });

12下一页
您需要登录后才可以回帖 登录

本版积分规则