Вызов func (didSelectItemAt), пока UIcollectionview находится на прокрутке - PullRequest
0 голосов
/ 17 мая 2018

В настоящее время я использую UICollectionView с несколькими ячейками в нем. UICollectionView прокручивается горизонтально для перемещения между ячейками.
Мой вопрос: Есть ли способ вызвать func (didSelectItemAt), щелкнув по ячейке , когда ее UICollectionView находится на прокрутке ?

Вот гифка.

image

Сразу после перетаскивания ячейки влево для прокрутки, я непрерывно щелкаю по ячейке, чтобы вызвать func (didSelectItemAt), но она получает вызов только после завершения прокрутки. Возможно ли, чтобы функция (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 вызываются в viewDidLoad.

Я знаю, что есть allowUserInteraction из UIViewAnimationOptions, который позволяет нажимать на вид во время его анимации. Есть ли более смелый код для func (didSelectItemAt)?

Нет связи, и UIGestureRecognizer присоединен к ячейке или представлению коллекции. Пока я установил isUserInteractionEnabled, isMultipleTouchEnabled, allowsMultipleSelection в true для collectionView, но он все еще ведет себя так же. Я использую Swift3, Xcode9.

Заранее спасибо.

...