Я делаю эффект подкачки в UICollectionView. Мое решение показано ниже.
setContentOffset
метод будет вызван в scrollViewWillEndDragging
и вычислит значение contentOffset x для следующей или предыдущей страницы и установит его с анимацией.
Однако есть одна проблема, которая заключается в том, что после вызова функции setContentOffset
, если я коснусь экрана, scrollView будет остановлен. Даже если вы отпустите палец, он не будет продолжаться, что означает, что он останавливается в неправильном положении.
На самом деле, я пытался переопределить targetOffset
в UICollectionViewFlowLayout
, но эта проблема все еще существует. Также я пытался дозвониться до touchesEnded
, но это даже не сработало. Кроме того, я попытался isPagingEnabled
, и это не вызовет этой проблемы, но мои элементы collectionView более сложны, что приводит к неправильному targetContentOffset
.
Мое текущее решение устанавливается scrollView.isUserInteractionEnabled = false
после setContentOffset и устанавливается в значение true при вызове scrollViewDidEndScrollingAnimation
. Это нормально, но мне все еще интересно, есть ли хороший способ сделать это?
Я попробовал Google Calendar и Outlook, они вернут вас обратно в положение, в котором оно должно быть.
Я выполнил поиск в Интернете и не могу найти какие-либо вопросы по этой проблеме.
Не могли бы вы помочь мне? Спасибо!