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?