场景:
· 想要监控某组件,可以通过addTarget,但是复杂一点的,如UIScrollView的滚动监听就需要通过代理来实现了。代理本质是官方定义好的协议(接口),你只要用官方给出的API接口,就能实现比如监听UIScrollView的滚动位置等功能。
案例:
实现监听UIScrollView的滚动位置。
实现:
不论UIScrollView属于控制器中的成员变量,还是自定义类的成员变量,都需要使用:
self.scrollView.delegate = self
需要三步:
· 如果UIScrollView属于自定义视图类中,需要让视图声明要实现代理:
- 声明实现代理
- 在初始化部分,绑定代理:UIScrollView的代理为当前类对象。
- 实现代理中(协议)中的方法:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGPoint offset = scrollView.contentOffset;
NSLog(@"Scroll view did scroll to offset: %@", NSStringFromCGPoint(offset));
}
滚动位置效果展示: