UIScrollView setContentOffset (Paging) остановлен сенсорным экраном - PullRequest
1 голос
/ 12 мая 2019

Я делаю эффект подкачки в UICollectionView. Мое решение показано ниже.

setContentOffset метод будет вызван в scrollViewWillEndDragging и вычислит значение contentOffset x для следующей или предыдущей страницы и установит его с анимацией.

Однако есть одна проблема, которая заключается в том, что после вызова функции setContentOffset, если я коснусь экрана, scrollView будет остановлен. Даже если вы отпустите палец, он не будет продолжаться, что означает, что он останавливается в неправильном положении.

На самом деле, я пытался переопределить targetOffset в UICollectionViewFlowLayout, но эта проблема все еще существует. Также я пытался дозвониться до touchesEnded, но это даже не сработало. Кроме того, я попытался isPagingEnabled, и это не вызовет этой проблемы, но мои элементы collectionView более сложны, что приводит к неправильному targetContentOffset.

Мое текущее решение устанавливается scrollView.isUserInteractionEnabled = false после setContentOffset и устанавливается в значение true при вызове scrollViewDidEndScrollingAnimation. Это нормально, но мне все еще интересно, есть ли хороший способ сделать это?

Я попробовал Google Calendar и Outlook, они вернут вас обратно в положение, в котором оно должно быть.

Я выполнил поиск в Интернете и не могу найти какие-либо вопросы по этой проблеме.

Не могли бы вы помочь мне? Спасибо!

1 Ответ

0 голосов
/ 20 мая 2019

Я очень старался понять это, и, наконец, у меня есть что-то правильное, чтобы поделиться с вами, ребята.

Решение состоит в том, чтобы установить targetContentOffset в scrollviewWillEndDragging, тогда я могу получить то, что хочу.

Истина заключается в том, что если вы вызываете setContentOffset, то scrollviewWillEndDragging не будет вызываться во второй раз endDragging (когда вы касаетесь экрана после первой endDragging).Однако, если вы просто установите targetContentOffset = requiredContentOffset, тогда будет вызван второй раз endDragging, и в это время снова будет вызван метод подкачки для перемещения UIScrollView в правильное положение.

То, что я имеюизвлеченные из этого никогда не звоните setContentOffset, когда вы делаете эффект нумерации страниц.Некоторые онлайн-уроки по нумерации страниц совершенно неверны.

...