在UIcollectionview处于滚动状态时调用func(didSelectItemAt)

时间:2018-05-17 01:13:15

标签: swift scroll uicollectionview uicollectionviewcell

目前,我正在使用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附加到单元格或集合视图。 到目前为止,我已经确定了 UIViewAnimationOptionsisUserInteractionEnabled, 对于collectionView,isMultipleTouchEnabled为true, 但它仍然表现相同。 我正在使用Swift3,Xcode9。

提前致谢。

0 个答案:

没有答案