为什么indexPathForItemAtPoint总是返回nil

时间:2013-03-24 20:41:24

标签: iphone ios uicollectionview flowlayout

UICollectionView中包含的UIViewController使用水平UICollectionViewFlowLayout。我也在使用在UIStoryboard中创建的原型单元格。我想创建一个自定义分页,所以我使用的是- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset

问题在于,每当我尝试获取与targetContentOffset相对应的indexPath(滚动视图中滚动停止的点)时,即使该点清楚,集合视图也会返回nil在集合视图中的contentSize。

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
{
    NSIndexPath *indexPath = [_collectionView indexPathForItemAtPoint:(*targetContentOffset)];
    // Do something with indexPath    
}

我做错了什么?

1 个答案:

答案 0 :(得分:0)

collectionView还不知道targetContentOffset的indexPath。

你必须要求collectionViewLayout为你提供该位置的布局的属性。

尝试这样的事情:

UICollectionViewLayoutAttributes *attribute = [_collectionView.collectionViewLayout layoutAttributesForElementsInRect:(CGRect){(*targetContentOffset).x, 0, 10, self.collectionView.bounds.size.height}][0];