Правильно отключите прокрутку назад (влево) в CollectionView с подкачкой - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь соответствующим образом отключить прокрутку влево на горизонтальном CollectionView с подкачкой.Я решил отключить прокрутку влево, но в то же время разрешил прокрутку вправо со следующим кодом:

var oldX: Float = 0.0

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if backScrollEnabled == false {
        if Float(scrollView.contentOffset.x) < oldX {
            scrollView.contentOffset = CGPoint(x: CGFloat(oldX), y: scrollView.contentOffset.y)
        }
        else {
            oldX = Float(scrollView.contentOffset.x)
        }
    } else {
        // Don't do anything because backScrollEnabled is true
    }
}

Однако в моем CollectionView может быть небольшое «перебегание / перетаскивание» даже при уменьшении скорости,Это приводит к тому, что пользователь проводит пальцем по соответствующей конечной точке для ячейки, которая является центром полной ширины и высоты фрейма collectionView. Без вышеприведенного кода , collectionView будет привязывать ячейку в indexPath обратно к идеальному центру в кадре, если он прошел несколько пикселей.

Мне нужен вышеуказанный код, чтобы учесть этокомната для маневра (скажем, 50px), чтобы переместиться влево во время этой анимации.Вот пример Изображение

...