选择单元格时,UICollectionView会滚动

时间:2015-12-04 05:03:21

标签: ios uicollectionview

当我尝试在UICollectionView中选择一个项目时,我遇到了麻烦,因为当我点击它时它会滚动一点。

我知道正在调用didSelectItemAtIndexPath,但我想在选择时阻止滚动。我只希望在用户滚动时滚动集合视图,但如果用户只是点击单元格则不应移动。只应选择。

我希望你能帮助我,因为我不知道如何防止这个问题。

任何帮助都将非常感激。

6 个答案:

答案 0 :(得分:49)

如果您使用collectionview.selectItem(at: indexpath, animated: true, scrollPosition: .top)以编程方式选择单元格 - 并且由于您未与我们共享任何代码,请假设这是正确的...

...然后像我一样你可能没有意识到你可以使用这样的空集:collectionview.selectItem(at: indexpath, animated: true, scrollPosition: [])

答案 1 :(得分:5)

如果您启用了分页并且CollectionView被手动滚动到与预期页面边界不对齐的位置,则会发生这种情况。当您选择单元格时,它会进行调整以将CollectionView放在正确的页面边界。

答案 2 :(得分:1)

你可以试试这个:

collectionView.selectItem(at: newIdexPath, animated: true, scrollPosition: UICollectionViewScrollPosition(rawValue: 0))

答案 3 :(得分:1)

在Swift 5中,您可以做到

let indexPath = IndexPath(item: 10, section: 0)

self.collectionView.selectItem(at: indexPath, animated: false, scrollPosition: .init(rawValue: 0))

viewDidAppearviewDidLayoutSubviews

答案 4 :(得分:0)

迅速5

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

        collectionView.scrollToItem(at: indexPath, at: .centeredHorizontally, animated: true)

}

答案 5 :(得分:-3)

对于Objective-C

[self.collectionView selectItemAtIndexPath:path animated:NO scrollPosition:UICollectionViewScrollPositionNone] 

对于Swift

collectionview.selectItemAtIndexPath(indexPath: path, animated: false, scrollPosition: None)