目前,我正在使用UICollectionView
,其中包含多个单元格。 UICollectionView
水平滚动以在单元格之间移动
我的问题是:有没有办法通过点击单元格来调用func(didSelectItemAt),而UICollectionView
正在滚动?
这是gif。
在将单元格向左拖动以进行滚动之后,我连续单击该单元格以调用func(didSelectItemAt),但只有在滚动完成时才会调用它。 在滚动时单击单元格后,是否可以立即调用func(didSelectItemAt)?
这是我的collectionView委托代码&数据源。
extension CardViewController : UICollectionViewDelegate,UICollectionViewDataSource {
public func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return cardCount
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = cardCollectionView.dequeueReusableCell(withReuseIdentifier: "card", for: indexPath) as! CardCell
cell.isFront = cellsSelectedStatus[indexPath.row]
return cell
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let cell = cardCollectionView.cellForItem(at: indexPath) as! CardCell
UIView.transition(with: cell, duration: 0.3, options: [.transitionFlipFromLeft,.allowUserInteraction], animations: nil, completion: nil)
cellsSelectedStatus[indexPath.row] = !(cellsSelectedStatus[indexPath.row])
cell.isFront = cellsSelectedStatus[indexPath.row]
print("did select")
}
Collectionview的dataSource& delegate在viewDidLoad
中调用。
我知道来自allowUserInteraction
的{{1}}允许在动画时点击视图。 func(didSelectItemAt)是否有更实用的代码?
没有网络和UIGestureRecognizers附加到单元格或集合视图。
到目前为止,我已经确定了
UIViewAnimationOptions
,
isUserInteractionEnabled
,
对于collectionView,isMultipleTouchEnabled
为true,
但它仍然表现相同。
我正在使用Swift3,Xcode9。
提前致谢。