zoukankan      html  css  js  c++  java
  • iOS UIScrollView 停止滑动 减速

    1.UIScrollView 减速

    可能通过decelerationRate的属性来设置,它的值域是(0.0,1.0),当decelerationRate设置为0.1时,当手指touch up时就会很慢的停下来。


    2.UIScrollView 如何判断停止滑动

    这里停止滑动的意思要明确一下,有两种,

    第一指手指停止滑动,因为手指停止滑动ScrollView。

    当手指停止滑动时,iOS会调UIScrollView的delegate

    - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate

    如果decelerate还为NO时,它最终停下,否则它还没最终停下


    第二指ScrollView停止滑动,指的滚动条完全停止下来。

    当decelerate = true时,iOS才会调UIScrollView的delegate

    - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView


    那UIScrollView真正停止滑动,应该怎么判断呢

    解决方法是这样的,首先在

    - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate


    {

    if(!decelerate)

    {   //OK,真正停止了,do something}

    }

    然后

     

     

    - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView


    {

     //OK,真正停止了,do something

    }



    3.消息传递


    当手指触摸后, scroll view会暂时拦截触摸事件,使用一个计时器,假如在计时器到点后,没有发生手指移动事件,那么,scroll view发送tracking events到被点击的subview
    假如在计时器到点前,发生了移动事件,那么 scroll view 取消tracking自己发生滚动

    子类可以重载touchesShouldBegin:withEvent:inContentView: 决定自己是否接收touch事件
    pagingEnabled当值是YES,会自动滚动到subview的边界,默认是NO
    touchesShouldCancelInContentView: 开始发送tracking messages消息给subview的时候
    调用这个方法,决定是否发送tracking messages消息到subview,假如返回NO,发送,YES则不发送
    假如 canCancelContentTouches属性是NO,则不调用这个方法
    来影响如何处理滚动手势


    新浪微博: messageloop亮仔


  • 相关阅读:
    Tips_信息列表(手风琴)效果的多种实现方法
    JS_ Date对象应用实例
    JS _函数作用域及变量提升
    C_使用clock()函数获取程序执行时间
    C_输入一个整数N,输出从0~N(算法思考)
    Chrome_查看 webSocket 连接信息
    Chrome_断点调试(使用vue-resource进行数据交互)
    Tips_利用padding实现高度可控的分隔线
    CSS_圣杯布局和双飞翼布局
    Tips_一级菜单栏实现
  • 原文地址:https://www.cnblogs.com/james1207/p/3306177.html
Copyright © 2011-2022 走看看