san*_*aet 17 objective-c uitableview uiscrollview ios
有没有办法检查我的tableview刚完成滚动?table.isDragging并且table.isDecelerating是我能找到的唯一两种方法.当tableview完成滚动时,我不确定如何预测或得到通知.
如果tableView正在滚动,我可以以某种方式使用计时器来检查每一秒吗?
sha*_*gao 35
您将实现UIScrollViewDelegate协议方法如下:
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
if (!decelerate) {
[self scrollingFinish];
}
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
[self scrollingFinish];
}
- (void)scrollingFinish {
//enter code here
}
Run Code Online (Sandbox Code Playgroud)
Swift版本
public func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
if decelerate {
scrollingFinished()
}
}
public func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
scrollingFinished()
}
func scrollingFinished() {
print("scrolling finished...")
}
Run Code Online (Sandbox Code Playgroud)
对于上面的委托方法The scroll view sends this message when the user’s finger touches up after dragging content. The decelerating property of UIScrollView controls deceleration.当视图减速停止时,参数decelerate将为NO.
Apple Document说,第二个用于缓慢滚动,甚至在手指触摸时滚动停止when the scrolling movement comes to a halt.
每次用户滚动停止时,以下代码都会更新.
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
if (!decelerate)
{
if (isScrollingStart)
{
isScrollingStart=NO;
[self scrollingStopped];
}
}
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
if (isScrollingStart)
{
isScrollingStart=NO;
[self scrollingStopped];
}
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
isScrollingStart=YES;
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
isScrollingStart=YES;
}
-(void)scrollingStopped
{
NSLog(@"Scrolling stopped");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18764 次 |
| 最近记录: |