Почему UIScrollView сильно прокручивается, когда я быстро смахиваю дважды в одном и том же направлении?

при горизонтальной прокрутке в UIScrollview, если я быстро проведу дважды в одном и том же направлении, вид прокрутки резко подпрыгнет. Есть ли способ предотвратить это? Чтобы объяснить подробности, вот журнал событий из scrollview, где в большинстве методов делегата я просто печатаю координату x.

scrollViewWillBeginDragging:
    14:55:12.034 Will begin dragging!
    14:55:12.037 - Position -0.000000
scrollViewWillBeginDeceleration:
    14:55:12.129 Deceleration rate 0.998000
    14:55:12.152 + Position 314.000000
scrollViewWillBeginDragging:
    14:55:12.500 Will begin dragging!
    14:55:12.522 - Position 1211.000000
scrollViewWillBeginDeceleration:
    14:55:12.530 Deceleration rate 0.998000
    14:55:12.533 + Position 1389.000000
scrollViewDidScroll: (printing values < 0 && > 6000 (bounds.size.width)
    14:55:12.595 !!! Position 7819.000000
    14:55:12.628 !!! Position 9643.000000
    14:55:12.658 !!! Position 10213.000000
    14:55:12.688 !!! Position 10121.000000
    14:55:12.716 !!! Position 9930.000000
    ... contentoffset.x drops with around 400 each scrollviewdidscroll call ...
    14:55:13.049 !!! Position 6508.000000
scrollViewDidEndDecelerating:
    14:55:13.753 Will end deceleration
    14:55:13.761 * Position 6144.000000

Самая заметная вещь в журнале - сразу после scrollViewWillBeginDeceleration, когда contentoffset.x перескакивает с ~ 6000 точками в вопрос миллисекунд.

Реализация

uiscrollview и uiscrollviewdelegate находятся в одном классе, подклассе uiscrollview, который также реализует протокол uiscrollviewdelegate, ничего особенного не делается для contentoffset, и единственные свойства, установленные в scrollview:

    self.showsHorizontalScrollIndicator = YES;
    self.scrollsToTop = NO;
    self.delegate = self;

Подпредставления scrollview добавляются один раз из вызова viewwillappear в uiviewcontroller, который размещает uiscrollview (и contentSize устанавливается соответствующим образом). Прокрутка, небольшое ожидание и повторная прокрутка работают отлично.

12
задан Proud Member 2 September 2012 в 16:33
поделиться