关于UIScrollViewDelegate协议中每个回调函数的意义及执行顺序的理解

转载 2013年12月01日 23:05:30
@protocol UIScrollViewDelegate<NSObject>

@optional

- (void)scrollViewDidScroll:(UIScrollView *)scrollView;  // 只要view有滚动(不管是拖、拉、放大、缩小  等导致) 都会执行此函数---any offset changes

- (void)scrollViewDidZoom:(UIScrollView *)scrollView__OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_2); // view的缩放,参考另一篇博文---any zoom scale changes

// called on start of dragging (may require some time and or distance to move)
// 将要开始拖拽,手指已经放在view上并准备拖动的那一刻
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;

// called on finger up if the user dragged. velocity is in points/second. targetContentOffset may be changed to adjust where the scroll view comes to rest. not called when pagingEnabled is YES
// 将要结束拖拽,手指已拖动过view并准备离开手指的那一刻  注意:当属性pagingEnabled为YES时此函数不被调用
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0);

// called on finger up if the user dragged. decelerate is true if it will continue moving afterwards
// 已经结束拖拽,手指刚离开view的那一刻
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;

// called on finger up as we are moving
//  view将要开始减速 view滑动之后有惯性 
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;

// called when scroll view grinds to a halt
// view已经停止滚动 
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;     

// called when setContentOffset/scrollRectVisible:animated: finishes. not called if not animating
// 有动画时调用
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView;

// return a view that will be scaled. if delegate returns nil, nothing happens
// 直接看英文吧
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;  

// called before the scroll view begins zooming its content 
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_2);

 // scale between minimum and maximum. called after any 'bounce' animations
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale;

// return a yes if you want to scroll to the top. if not defined, assumes YES
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView;

// called when scrolling animation finished. may be called immediately if already at top 
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView;     

@end

执行顺序:
willBeginDragging
DidScroll
willEndDragging
DidEndDragging
DidScroll
willBeginDecelerating
DidScroll
DidEndDecelerating

#define DELEGATE_CALLBACK(DELEGATE, SEL) if (DELEGATE && [DELEGATE respondsToSelector:@selector(SEL)]) [DELEGATE performSelector:@selector(SEL)]
#define DELEGATE_CALLBACK_ONE_PARAMETER(DELEGATE, SEL, X) if (DELEGATE && [DELEGATE respondsToSelector:@selector(SEL)]) [DELEGATE performSelector:@selector(SEL) withObject:X]

#define DELEGATE_CALLBACK_TWO_PARAMETER(DELEGATE, SEL, X, Y) if (DELEGATE && [DELEGATE respondsToSelector:@selector(SEL)]) [DELEGATE performSelector:@selector(SEL) withObject:X withObject:Y]

(转自:http://blog.sina.com.cn/s/blog_74e9d98d010154x3.html)

相关文章推荐

如何按照顺序执行异步ajax的回调函数

之前在业务上遇到了一个需求,需要有依赖顺序地执行不定数量的ajax请求到服务器。 我们知道一般来说JS的异步ajax的回调函数的执行顺序是无法保证的。 我在jQuery的基础上使用了队列和递归的方法初...

js中的for循环与异步回调函数执行顺序问题

上一篇博文“利用HTML5新特性localstorage把用户数据暂时存储在客户端,用于之后上传”里提到了用for循环,但是今天发现for循环不起作用。最终post请求只执行了一次,代码如下 for...

android之回调函数的意义

1.class A实现接口CallBack callback——背景1 2.class A中包含一个class B的引用b ——背景2 3. class B有一个参数为callback的方法f(...

android中Activity的生命周期各回调函数的调用顺序学习心得

Activity是android里重要组件,主要提供用户界面的,一般每个App都会用到它,牢记activity的生命周期中的各个回调函数的回调顺序是非常必要的。google官方提供的那张图,基本说明了...

lwip协议栈里面回调函数的使用

在用LWIP协议栈时,有三种方式可以建立一个网络链接:1.用TCP,UDP模块提供的RAW函数 2.使用NETCONN API 3,使用SOCKET API。...

Objective-C利用协议实现回调函数

在编写iphone开发时,最常用的就是回调函数。自己编写回调函数,实现动态加载数据,加载完数据之后就利用回调函数通知给前台页面,显示相应数据的界面。在iphone中利用协议可以很容易的实现回调函数,后...

蓝牙4.0协议编程之回调函数

蓝牙4.0协议编程之回调函数 基于TI公司蓝牙4.0协议 转载请注明出处:http://blog.csdn.net/zhcx2011/article/details/9010541 1.回调函数...

ios中利用协议实现回调函数功能

最近因为项目中需要实现回调函数功能,所以学习了下在ios中如何实现回调函数的相关知识。我们知道在C/C++中回调函数是通过函数指针来实现的,在ios中我们可以通过协议来实现回调功能,另外还可以通过委托...

回调函数详解

  • 2012年11月06日 10:47
  • 158KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于UIScrollViewDelegate协议中每个回调函数的意义及执行顺序的理解
举报原因:
原因补充:

(最多只允许输入30个字)