UIScrollView的滚动,停止(UIScrollViewDelegate)

在使用UIScrollView和它的子类UITableView时,有时需要在不同操作状态下,做不同的响应。

如何截获这些状态,如正在滚动,滚动停止等,使用UIScrollViewDelegate_Protocol


@interface SampleClass: UITableViewController<UIScrollViewDelegate> {

...

}

...

@end


@implement SampleClass

...

#pragma mark -
#pragma mark UIScrollViewDelegate

// 触摸屏幕来滚动画面还是其他的方法使得画面滚动,皆触发该函数
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    NSLog(@"Scrolling...");
}

// 触摸屏幕并拖拽画面,再松开,最后停止时,触发该函数
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
    NSLog(@"scrollViewDidEndDragging  -  End of Scrolling.");
}

// 滚动停止时,触发该函数

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    NSLog(@"scrollViewDidEndDecelerating  -   End of Scrolling.");
}

 

// 调用以下函数,来自动滚动到想要的位置,此过程中设置有动画效果,停止时,触发该函数

// UIScrollView的setContentOffset:animated: 

// UIScrollView的scrollRectToVisible:animated:

// UITableView的scrollToRowAtIndexPath:atScrollPosition:animated:

// UITableView的selectRowAtIndexPath:animated:scrollPosition:

- (void)scrollViewDidEndScrollin gAnimation :(UIScrollView  *)scrollView {
       NSLog(@"scrollViewDidEndScrollin gAnimation   -     End of Scrolling.");
}

@end