iPhone UIScrollView / setContentOffset странность - PullRequest
5 голосов
/ 30 января 2010

У меня странная проблема с setContentOffset, которую я не могу решить: Я пытаюсь создать «бесконечный» вид прокрутки, поэтому я хотел бы сбросить смещение содержимого в определенной позиции. С кодом ниже setContentOffset будет вызываться с x = 160px. Если я перетащу вид прокрутки, мой журнал будет выглядеть так:

смещение: 158

смещение: 159

смещение: 160

смещение: 80

смещение: 160

Что происходит, когда выполняется мой setContentOffset (до 80), когда я продолжаю перетаскивать UIScrollView, кажется, забыл об этом и продолжает на 160. Еще более странно: когда я устанавливаю анимацию: ДА, это работает. Может быть, проблема времени? Когда я вызываю setContentOffset из scrollViewDidScroll, scrollViewDidScroll вызывается снова.

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
 NSInteger tileNo = floor(scrollView.contentOffset.x / 80);
 NSLog(@"offset: %f, tile: %d, lastTile: %d", scrollView.contentOffset.x, tileNo, lastTileNo);

 if (tileNo > lastTileNo) {
      [scrollView setContentOffset:CGPointMake(80, 0) animated:NO];
 }

 lastTileNo = tileNo;

}

Спасибо за помощь, Stephan

Ответы [ 3 ]

3 голосов
/ 31 января 2010

Только что получил ответ от sombody из Apple: «Это известная проблема, которая будет устранена в будущем выпуске iPhone SDK. Если вы сможете протестировать его, вы должны найти его в текущей бета-версии . Если у вас все еще есть проблемы, пожалуйста, отправьте новую ошибку. "

0 голосов
/ 13 апреля 2012

Та же проблема здесь.

Это своего рода несоответствие, вызывая setContentOffset: inside scrollViewDidScroll: он обновляет contentOffset табличного представления только до следующего вызова scrollViewDidScroll :.

Я понял, что эта ошибка возникает только тогда, когда пользователь не перетаскивает табличное представление (только замедляет).

В моем случае обновление только при перетаскивании пользователя решило проблему.

Надеюсь, это поможет.

0 голосов
/ 30 января 2010

Проблема в том, что UIScrollView не бесконечен по своему замыслу.У него жесткое ограничение по размеру контента.Вы уверены, что CGFLOAT_MAX (340282346638528859811704183484516925440) слишком мал для вашего вида прокрутки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...