当前位置 博文首页 > cungudafa的博客:iOS UIcollection监听滚动最顶部的section
移动端除了点击事件的监听响应,更复杂一点的可以说是滑动手势监听响应。手势类型包含单击、双击、上下滚动、左右滚动、放大缩小等等。
一次需求是当列表在上下滑动时,监听到最顶端的一个目录分类并显示,这是一个很常见的需求。
实现的需求:点击左侧一级分类可以预览到右侧二级目录内容,右侧滑动时监听屏幕内第一个cell内容属于何分类,左侧滚动并高亮显示。
此需求也可以归类于二级目录联动,实现的方法:
由于我前期采用的是UICollectionView 来写这个页面,导致一个非常严重的bug:可视范围内的所有cell是乱序的,因此,监听到的cell不一定是最上端的元素。
解决办法:
获取到可视范围内的所有元素再排序,确保每次滑动响应的都是第一个最顶部的元素。
NSArray* visibleCellIndex = self.collectionView.indexPathsForVisibleItems;
NSArray *sortedIndexPaths = [visibleCellIndex sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
NSIndexPath *path1 = (NSIndexPath *)obj1; NSIndexPath *path2 = (NSIndexPath *)obj2;
return [path1 compare:path2];
}];
NSIndexPath* indexPath = [sortedIndexPaths firstObject];
cs