Разрешить UIScrollView прокручивать содержимое без перехода

#ios #uiscrollview #uicollectionview #overscroll

#iOS #uiscrollview #uicollectionview #перемотка

Вопрос:

Обзор

Я создаю приложение, которое позволяет пользователю прокручивать основное UICollectionView на определенную величину, чтобы загружать связанный контент. Тактильные ощущения при прокрутке должны быть такими же, как и во многих других приложениях iOS, которые приводят к обновлению содержимого на текущей странице, поэтому я установил collectionView.bounce = YES .

Как только пользователь превысит прокрутку на указанную величину, я хочу переместить текущую UICollectionView страницу вниз и из поля зрения, одновременно перемещая новую страницу вниз в поле зрения из верхней части устройства, очень похоже на навигацию между статьями в приложении Digg для iPhone.

Я обнаруживаю перемотку, используя этот UIScrollViewDelegate метод:

 -(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    CGFloat offsetY = scrollView.contentOffset.y;
    CGFloat contentHeight = scrollView.contentSize.height;

    if (offsetY < -40){
        [self.delegate overscrolledUp];
    }

    if (offsetY - (contentHeight - scrollView.frame.size.height) > 40){
        [self.delegate overscrolledDown];
    }
}
 

Проблема

Делегат заботится о перемещении фреймов этих UICollectionView файлов, но моя проблема заключается в том, что, когда текущая страница перемещается вниз и выходит из поля зрения (или вверх и из поля зрения, если пользователь прокручивает вниз), UICollectionView прокрутка также возвращается к contentOffset значению (0,0). Это приводит к странно выглядящей анимации, которой я бы хотел избежать. Я хочу, чтобы пользователь мог выполнять прокрутку, чтобы отображался индикатор, описывающий новый контент, который он может видеть, но я не хочу, чтобы эта прокрутка была отменена во время анимации смены страницы.

Вопрос

Есть ли способ запретить a UICollectionView / UIScrollView возвращать его прокрутку в (0,0) после того, как пользователь прокручивает содержимое?

Ответ №1:

Взгляните на

https://github.com/enormego/EGOTableViewPullRefresh

Он содержит запрос на обновление кода tableview, вы можете использовать его напрямую или как источник вдохновения.

Комментарии:

1. Спасибо! Что помогло, так это установить contentInset для ScrollView на смещение после достижения порогового значения.