收藏
回答

小程序 scroll-view 的 bindscroll响应不及时,有卡顿

问题模块
API和组件

滑动的时候,会出现卡顿现象,触发的bindscroll 函数会卡顿,应该怎么解决

最后一次编辑于  2017-11-13  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

7 个回答

  • 黄思程
    黄思程
    2017-11-15

    惯性滚动无法去掉

    2017-11-15
    赞同
    回复
  • 黄思程
    黄思程
    2017-11-14

    在手机上,touchend后还有一段惯性滚动,这个也会触发bindscroll,请确认代码逻辑有没有考虑这点。

    另外,只是单纯的保存scrollTop的状态,不建议setData,直接this._scrollTop = e.detail.scrollTop即可,只有更新界面才应该用setData

    2017-11-14
    赞同
    回复 4
    • struggle
      struggle
      2018-06-05

      我现在遇到的问题和这个类似  就是想边滚动  边记录滚动的位置  当滚动的位置 大于某个值时 比如 >300 就将更新页面的显示情况  需要通过this.setData({isfixed:true})  如果小于 <300 this.setData({isfixed:false}) 则设置为  改变页面的某个区域的定位方式  但是反应很迟钝  这个怎么解决

      2018-06-05
      1
      回复
    • 正義の味方
      正義の味方
      2018-07-27回复struggle

      我也是遇到这个问题,请问你是怎么解决的啊~

      2018-07-27
      回复
    • 李泽定
      李泽定
      2018-08-21回复struggle

      您好, 我也遇到了相同问题,请问解决了吗

      2018-08-21
      回复
    • 好腻诺
      好腻诺
      2018-11-01回复struggle

      滑动这块的响应是在太不灵敏,最后决定吧有关滑动效果的功能都去掉了,你说的问题确实都有,但是没解决掉,之前就觉得在苹果上还好,android是真的不行

      2018-11-01
      回复
  • 黄思程
    黄思程
    2017-11-13

    卡顿是如何评估的?

    2017-11-13
    赞同
    回复 1
    • 周军
      周军
      06-10

      延迟几秒之后才开始执行onpagescroll的方法

      06-10
      回复
  • 方先生
    方先生
    2018-07-30

    我也遇到了,特别在android上

    2018-07-30
    赞同 1
    回复 2
    • 李泽定
      李泽定
      2018-08-21

      您好 , 这个卡顿问题解决了吗,我也遇到了这个问题

      2018-08-21
      回复
    • 🐬
      🐬
      2018-08-28

      您好,我也遇到这个问题了  有没有解决办法

      2018-08-28
      回复
  • Monster
    Monster
    2018-07-30

    也遇到了 相同问题 求解答

    2018-07-30
    赞同 1
    回复 2
    • 李泽定
      李泽定
      2018-08-21

      您好, 我也遇到了相同问题,请问解决了吗

      2018-08-21
      回复
    • 好腻诺
      好腻诺
      2018-08-29

      已经去除滑动着方面的功能了

      2018-08-29
      回复
  • 好腻诺
    好腻诺
    2017-11-15

    嗯嗯,滚动惯性确实没有考虑的,可能是这个原因吧,在iphone6上面就是会先向上滚一下在滑到指定的view,有什么属性可以去除这个惯性吗。还有变量存值哪里,多谢指教。

    2017-11-15
    赞同
    回复
  • 好腻诺
    好腻诺
    2017-11-14

    在scroll上面绑定了bindscroll和bindtouchend,bindscroll用来保存当前视图距离顶部位置,bindtouchend通过获取bindscroll获取的scrollTop的值判断滑动到某个view;但是在开发者滑的时候没问题,在真机上面停止触碰滑动后,会停留个0.5秒左右的时间在滑到指定的view上面。可能是bindtouchend有问题吧。


    <scroll-view scroll-y style="height: {{scrollHeight}}px;" lower-threshold="150"  wx:if="{{index == 0}}"  bindscrolltolower="loadMore" bindscroll="bindScroll" scroll-into-view="{{recomment_view_id}}" scroll-with-animation="{{true}}" bindtouchend="bindScrollEnd">


    bindScroll: function(e){

            var that = this;

            var scrollTop = e.detail.scrollTop;

            var activeIndex = that.data.activeIndex;

            if(activeIndex == 0){

                that.setData({

                    recomment_scroll_top: scrollTop

                })

            }else{

                that.setData({

                    new_scroll_top: scrollTop

                })

            }

        },

        bindScrollEnd: function(e){

            var that = this;

            var activeIndex = that.data.activeIndex;

            if(activeIndex == 0){

                var scrollTop = that.data.recomment_scroll_top;

                console.log(scrollTop);

                if(scrollTop <= 0){

                    that.setData({

                        recomment_view_id: 'recomment_refresh'

                    })

                    that.getShaiList(1);

                }

                if(scrollTop < 60 && scrollTop > 0){

                    that.setData({

                        recomment_view_id: 'recomment_content'

                    })

                }

            }else{

                var scrollTop = that.data.new_scroll_top;

                if(scrollTop <= 0){

                    that.setData({

                        new_view_id: 'new_refresh'

                    })

                    that.getShaiList(1);

                }

                if(scrollTop < 60 && scrollTop > 0){

                    that.setData({

                        new_view_id: 'new_content'

                    })

                }

            }

        },


    2017-11-14
    赞同
    回复