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亮仔
iOS UIScrollView 停止滑动 减速的更多相关文章
- ios 中如何应对UIScrollView快速滑动(暴力用户,暴力测试)
1.实现UIScrollViewDelegate 开始滑动: - (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView 滑动 ...
- iOS UIScrollview代理方法
方法&&属性: // 监控目前滚动的位置(默认CGPointZero) CGPoint contentOffset; - (void)setContentOffset:(CGPoint ...
- IOS UIScrollView常用代理方法
iOS UIScrollView代理方法有很多,从头文件中找出来学习一下 //只要滚动了就会触发 - (void)scrollViewDidScroll:(UIScrollView *)scrollV ...
- 一行代码,让你的应用中UIScrollView的滑动与侧滑返回并存
侧滑返回是iOS系统的一个很贴心的功能,特别是在大屏手机上,单手操作的时候去按左上角的返回键特别不方便.当我在使用一个APP的时候,如果控制器不能侧滑返回,我会觉得这个APP十分不友好...这款产品在 ...
- Unity3d NGUI的使用(九)(UIScrollView制作滑动列表)
UIScrollView制作滑动列表,可横向,竖直展示一些列表在固定可视范围内 UIScrollVIew只是一个可滑动的UI组件 如果需要制作复杂的可视区域UI需要配合使用UIPanel与UIGrid ...
- 关于uisliderview 监听停止滑动的状态
今天遇到一个问题,做颜色控制的时候,通过slider 改变颜色的亮度.如果直接在slider 上绑定事件,则改变一次就需要向服务器发送一次请求.这种是显然不合理的. 所以使用了下面的解决方法 先将sl ...
- 纯css隐藏移动端滚动条解决方案(ios上流畅滑动)
纯css隐藏移动端滚动条解决方案(ios上流畅滑动) html代码展示(直接复制代码保存至本地文件运行即可): <!DOCTYPE html> <html lang="en ...
- 纯css隐藏移动端滚动条解决方案(ios上流畅滑动)---转载
html代码展示(直接复制代码保存至本地文件运行即可): <!DOCTYPE html> <html lang="en"> <head> < ...
- IOS开发中滑动页面时NSTimer停止的问题
我们在做倒计时的时候,发现当你手指按着屏幕不放,拖动tableView滑动的时候,写在cell上得倒计时停止倒计时,松开继续倒计时.研究发现就是拖动tableView滑动时,NSTimer停止了. 这 ...
随机推荐
- HDOJ 3047 带权并查集
解题思路转自: http://blog.csdn.net/azheng51714/article/details/8500459 http://blog.csdn.net/acresume/artic ...
- javascript重点笔记
操作符之间的优先级(高到低):算术操作符 >比较操作符 >逻辑操作符 >"="赋值符号 算术运算符
- Homebrew 1.0.0 发布,MacOS 上的包管理器
神器,没有它不知道怎么用macos https://www.oschina.net/news/77367/homebrew-1-0-0
- 基于visual Studio2013解决算法导论之007优先队列(堆实现)
题目 优先队列 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <malloc.h> #in ...
- load data 方式导入的数据不可以用binlog日志进行恢复,因为binlog里面不产生insert sql语句。
QQ群里面有人问起这个问题: 用load data 导入数据的时候,在binlog文件中记录的不是insert 语句,这样的话,如果用load data 导入数据,当需要恢复数据库的时候 bi ...
- Android核心基础(十一)
1.Android的状态栏通知(Notification) 通知用于在状态栏显示消息,消息到来时以图标方式表示,如下: //获取通知管理器 NotificationManager mNotificat ...
- asp.net错误.在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错
解决办法:将该项目所在目录设置为虚拟目录,右键-转为应用程序.
- MSSQL - 尚未备份数据库 xxxx 的日志尾部。如果该日志包含您不希望丢失的工作,请使用 BACKUP LOG WITH NORECOVERY 备份该日志。请使用 RESTORE 语句的 WITH REPLA
此错误的原因是:你的数据库服务器中存在同名数据库! RESTORE DATABASE [student] FROM DISK = N'G:\备份文件' WITH FILE = 1, MOVE ...
- C++ 左值 右值
最近在研究C++ 左值 右值,搬运.收集了一些别人的资料,供自己记录和学习,若以后看到了更好的解释,会继续补充.(打“?”是我自己不明白的地方 ) 参考:<Boost程序库探秘——深度解析C ...
- Java基础03 构造器与方法重载
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在方法与数据成员中,我们提到,Java中的对象在创建的时候会初始化(initial ...