当前位置: 代码迷 >> 综合 >> UITableView - UICollectionView代理方法“scrollViewDidEndScrollingAnimation”的实现。
  详细解决方案

UITableView - UICollectionView代理方法“scrollViewDidEndScrollingAnimation”的实现。

热度:50   发布时间:2023-12-18 12:07:22.0

用到scrollViewDidEndScrollingAnimation这个方法,起因是需求方提出要在界面滑动时隐藏某个东西,停止滑动时在显示出来。

在UIScrollViewDelegate的代理里面看到了如下方法:

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView; // called when setContentOffset/scrollRectVisible:animated: finishes. not called if not animating

具体实现之后发现并不调用,然后在度娘上面各种搜索scrollViewDidEndScrollingAnimation的实现,然后各种文章都是说要setAnimation,但是setAnimation在scrollview里面才能去实现,UITableView和UICollectionView里面没有具体的实现。

终于功夫不负有心人,在我老大的代码里面发现了,具体实现方式:

// 开始滑动时调用,只调用一次,手指不松开只算一次
// 这里方法也可以是scrollViewDidScroll
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{@"开始滑动时调用");// 如果调用 setContentOffset 为调用这个一次,// 如果调用 setContentOffset: animated 为调用这个多次// 但是最后都会调用 scrollViewDidEndScrollingAnimation/// 下面的方法是从网上看的。判断停止的方法[NSObject cancelPreviousPerformRequestsWithTarget:self];//enshore that the end of scroll is fired because apple are twats...[self performSelector:@selector(scrollViewDidEndScrollingAnimation:) withObject:nil afterDelay:0.3];}
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
{[NSObject cancelPreviousPerformRequestsWithTarget:self];
}
  相关解决方案