关于UIScrollViewDelegate协议中每个回调函数的意义及执行顺序的理解
2013-12-01 23:05
639 查看
@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)
@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)
相关文章推荐
- 关于UIScrollViewDelegate协议中每个回调函数的意义及执行
- 关于UIScrollViewDelegate协议中每个回调函数的意义及执行
- 关于UIScrollViewDelegate协议中每个回调函数的意义及执行
- 关于UIScrollViewDelegate协议中每个回调函数的
- UITableView + 协议执行顺序
- UIScrollView代理方法执行顺序
- 关于UIView 中init(包括重写) 与 viewDidLoad执行顺序问题
- UIScrollViewDelegate协议方法概述
- 理解Linux环境变量及配置文件执行顺序 博客分类: Linux 每个用户都有自己专属的运行环境,这个环境是由一组变量所定义,这些变量称之为环境变量。用户可以修改环境变量以满足自己的要求。
- ios-day05-03(实现UIScrollViewDelegate协议,监听ScrollView的缩放、滑动等状态)
- 关于重写UICollectionViewCell后的执行顺序
- UIScrollView控件的常用属性与<UIScrollViewDelegate>协议中各个方法的触发时机
- 【iOS】UITableView delegate/dataSource方法执行顺序
- UIScrollViewDelegate几个函数的理解
- iOS属性传值(视图控制器viewController的执行顺序的理解和懒人加载的理解)
- 对 ViewGroup 生命周期执行顺序的理解
- iOS 设计中关于UIScrollViewDelegate的几个代理方法的简单介绍
- 拖动UIScrollView时的delegate调用调用顺序
- IOS--UIScrollView delegate 协议-
- >02 (协议代理)、自定义视图、程序执行顺序(iOS程序启动流程 )、视图控制器、(MVC的理解)