UICollectionViewCell 滚动:Swift 3

Posted

技术标签:

【中文标题】UICollectionViewCell 滚动:Swift 3【英文标题】:UICollectionViewCell Scrolling : Swift 3 【发布时间】:2017-05-21 03:34:14 【问题描述】:

我有一个 UICollectionViewCell,它当前占据了(父)UICollectionViewController 的整个视图;即有1个section和1个cellatindex。

我在这个 UICollectionViewCell 中还有一个文本字段,作为子视图,以及许多其他子视图。

我想让用户在文本字段之外单击并滚动到单元格的顶部。

我目前将 IQKeyboardManagerSwift 包含为一个可可豆荚,当键盘出现时,它会导致文本字段弹出到屏幕顶部。当前,当识别到点击时(我已通过 handleViewTap(sender: UITapGestureRecognizer) 实现),我关闭键盘并且整个单元格向下滚动键盘高度,从而将整个单元格向下滚动。我想重置单元格,使其被推到视图的顶部。

截图如下:

初始加载

单击文本字段(由于 IQKeyboardManagerSwift,键盘出现并向上推动集合视图 [注意:此功能实际上在文本字段内第一次单击时失败])

在文本域外点击会将整个单元格推到屏幕中心:

我想让单元格滚动回单元格顶部,即重置为初始图像视图或初始加载(第一张图片)。 我在 tap 函数中尝试了以下操作,但它不起作用:

let visibleItems: NSArray = self.collectionView!.indexPathsForVisibleItems as NSArray
let currentItem: IndexPath = visibleItems.object(at: 0) as! IndexPath
let nextItem: IndexPath = IndexPath(item: currentItem.item + 0, section: 0)
self.collectionView?.scrollToItem(at: nextItem, at: .top, animated: true)

另外:第一次点击文本字段时,文本字段被推到屏幕外,在当前视图顶部上方。 (下)我想如果我能以某种方式在 UICollectionViewCell 内部滚动,所有这些问题都会得到解决。但是,我不确定如何在 uicollectionviewcell 本身内滚动,只知道如何滚动到 uicollectionview 内的某个单元格。

【问题讨论】:

只是出于好奇,你为什么不用ScrollView? 试图实现scrollview,但是滚动干扰了其他地方的uipickerview,只有一个ScrollView。 【参考方案1】:

要更改单元格的位置,请使用: collectionView.setContentOffset(CGPoint(x: x, y: 0), animated: true) 并根据您希望它移动多少来更改该点的 x 值。

【讨论】:

这导致我:self.collectionView?.contentOffset = CGPoint(x:-((self.collectionView?.contentInset.left)!), y:-((self.collectionView?.contentInset .top)!)) -- 这是我正在寻找的行,位于:***.com/a/33435087/4314265

以上是关于UICollectionViewCell 滚动:Swift 3的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionViewCell 滚动:Swift 3

在 UICollectionViewCell 内的 UICollectionView 中平滑滚动

大 UICollectionViewCell 在滚动时消失

向下滚动时多次选择 UICollectionViewCell?

UICollectionViewCell 滚动时缩放单元格大小

UICollectionViewCell 在滚动开始后立即更改数据