• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
james1207

博客园    首页    新随笔    联系   管理    订阅  订阅

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亮仔

 


posted @ 2013-09-06 21:04  Class Xman  阅读(1593)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3