Дождитесь окончания касания на UICollectionViewCell, прежде чем для параметра isSelected установлено значение true - PullRequest
3 голосов
/ 20 января 2020

В настоящее время у меня есть collectionView, и его единственная функция - позволить пользователю выбирать цвет. Когда пользователь выбирает цвет (щелкает ячейку), выбранный индикатор (UIView) анимируется внутри cell, давая пользователю знать, что выбран определенный цвет. Основная функциональность есть, но мой вопрос больше основан на пользовательском интерфейсе. Когда я прокручиваю, ячейка думает, что я щелкаю по ней, и она устанавливает isSelected в true на секунду, пока я не уберу свой палец из ячейки. Это вызывает анимацию в нежелательное время. Итак, я думаю, что проблема в shouldSelectItemAt в CollectionViewDelegate методах. С помощью UIGestureRecognizer я могу измерить, имеет ли sender state .began или .ended. Будет ли мой вопрос вызывать это или что-то подобное?

Вот методы выбора collectionView делегата.

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        let cell = colorPreviewCollectionView.cellForItem(at: indexPath) as! TrayColorPreviewCell
        // stuff with cell happens here
    }

func collectionView(_ collectionView: UICollectionView, shouldSelectItemAt indexPath: IndexPath) -> Bool {
        let cell = colorPreviewCollectionView.cellForItem(at: indexPath) as! TrayColorPreviewCell
        guard cell.isSelected else { return true }
        return false
    }

В классе TrayColorPreviewCell (custom UICollectionViewCell) я использую isSelected для запуска анимации. Эта анимация повторяется при прокрутке.

override var isSelected: Bool {
        didSet {
            changeSelectionStatus()
        }
    }

func changeSelectionStatus() {
        if isSelected {
            // animation to indicate selection

        } else {
            // animation to indicate changed selection
        }

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...