Ограничение отказов для UIScrollview в iOS

Мне нужно ограничить отскок в UIScrollView, чтобы он отскакивал как обычно внизу, но не шел дальше X пикселей вверху (нижняя часть не имеет значения).

Есть ли способ ограничить размер подпрыгивания? Я думаю, что, возможно, метод в делегате, такой как scrollViewWillScroll (вместо scrollViewDidScroll), позволит мне использовать те события прокрутки, которые перемещаются дальше, чем top+X, но я пока не смог найти подходящий.

Любые подсказки?


person HiddenDev    schedule 12.12.2012    source источник
comment
Могу я спросить, почему вы хотите уменьшить подпрыгивание?   -  person Ryan Poolos    schedule 12.12.2012
comment
Извините за очень поздний ответ, но да, вы можете: я играл с эффектом параллакса с передним списком и фоновым изображением. Что-то похожее на приложение PAth 2.0, но в какой-то момент я хотел, чтобы отскок варьировался в зависимости от размера заднего изображения, чтобы основной список никогда не перемещался (отскакивал) до такой степени, что между задним изображением и передний список.   -  person HiddenDev    schedule 16.01.2013


Ответы (1)


scrollViewDidScroll: - правильный метод для этого. Просто отрегулируйте там contentOffset.

Этот пример ограничит верхний отскок до 20 пикселей:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if (scrollView.contentOffset.y < -20) {
        scrollView.contentOffset = CGPointMake(0, -20);
    }
}

Обратите внимание, что есть небольшая неестественная задержка, пока вид не прокрутится обратно до 0,0, когда причиной отскока было замедленное смахивание, а не перетаскивание. Но я думаю, что нет никакого способа предотвратить это. В основном scrollView все еще отскакивает полностью, но не отображает его.

person Matthias Bauch    schedule 12.12.2012
comment
Вы совершенно правы :) Возможно, я раньше делал что-то не так, потому что это выглядело некрасиво. - person HiddenDev; 12.12.2012