UIScrollView начальная прокрутка без подкачки - PullRequest
3 голосов
/ 25 сентября 2011

первый вопрос здесь, будь мил: P

Я пытаюсь создать бесконечный UIScrollView (я использовал демонстрационный проект Apple "StreetScroller"). Когда UIScrollView находится почти в конце contentSize, contentOffset устанавливается в центр contentSize, и все подпредставления перемещаются, чтобы он был прозрачным для пользователя.

Это работает правильно, когда вы прокручиваете медленно, но когда вы прокручиваете слишком быстро и когда вы достигаете конца UIScrollView, все становится странным.

В моем случае я использую UIScrollView с frame.size.width = 320 и contentSize.x = 3 * frame.size.width. И это то, что происходит в журналах, когда вы выполняете слишком быструю прокрутку и достигаете конца contentSize (например, если x> 560 при прокрутке вправо):

-> UIScrollView прокручивается из-за инерции

SetContentOffset called width x : 504.730072
SetContentOffset called width x : 516.878967
SetContentOffset called width x : 528.489990
SetContentOffset called width x : 540.347656
SetContentOffset called width x : 550.754028
SetContentOffset called width x : 561.200378

-> UIScrollView доходит до конца contentSize, поэтому мы переходим к центру

The next call of setContentOffset is for recentering the view
SetContentOffset called width x : 320.000000

-> Проблема в том, что UIScrollView не принимает изменения contentOffset.x в учетную запись, он продолжает анимацию с последним использованным значением contentOffset.x ....

SetContentOffset called width x : 571.421753
The next call of setContentOffset is for recentering the view
SetContentOffset called width x : 320.000000
SetContentOffset called width x : 581.283447
The next call of setContentOffset is for recentering the view
SetContentOffset called width x : 320.000000
SetContentOffset called width x : 610.100952

И это продолжается до тех пор, пока не закончится анимация.

Если у кого-то есть решение для установки contentOffset и принудительного UIScrollView для обновления его анимации:)

Я прочитал почти всю тему на stackoverflow и других веб-сайтах о бесконечном UIScrollView, и я не увидел ни одного рабочего решения, чтобы изменить contentOffset во время анимации, и я попытался переназначить все разные методы делегата UIScrollView. И я не хочу изменять contentSize во время прокрутки (это работает только тогда, когда вы прокручиваете справа или бот ...)

1 Ответ

0 голосов
/ 14 января 2012

Я только что заметил эту проблему в примере Apple StreetScroller, работающем в iOS Simulator 4.3.

Я видел этот вопрос здесь: Infinite UIScrollView получает странное поведение в iOS4.3, а не iOS5 и только что протестировано в симуляторе iOS 5 и может подтвердить, что он работает там, как ожидалось.

Не знаю, в чем проблема с тем же кодом в 4.3.

...