Как видно из названия, у меня есть UIViewController
с двумя UICollectionViews
, которые отображают один и тот же контент горизонтально. На главной показана одна фотография за один раз, а большие пальцы - несколько.Ручная прокрутка двух UICollectionViews, показывающих один и тот же контент
Я переопределил метод UIScrollViewDelegate
и добавил код, чтобы пользователь прокрутил основное CV, а также прокручивает CV. Однако я хотел бы также включить и обратное (прокрутите большие пальцы, которые быстро перемещают основной). Однако я получаю эффект обратной связи.
Вот мой фрагмент кода:
#pragma mark - UIScrollViewDelegate
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
if(scrollView == self.mainCollectionView){
CGFloat x = self.mainCollectionView.contentOffset.x/self.mainCollectionView.bounds.size.width * SM_IPHONE_THUMB_CONTAINER_SIZE; // cell width + spacing 48 + 8
CGFloat y = 0;
CGPoint contentOffset = CGPointMake(x, y);
self.thumbsCollectionView.contentOffset = contentOffset;
}
else if(scrollView == self.thumbsCollectionView){
// CGFloat x = self.thumbsCollectionView.contentOffset.x/self.thumbsCollectionView.bounds.size.width * SM_IPHONE_THUMB_CONTAINER_SIZE; // cell width + spacing 48 + 8
// CGFloat y = 0;
// CGPoint contentOffset = CGPointMake(x, y);
// self.mainCollectionView.contentOffset = contentOffset;
}
}
Я полагаю, что я могу отслеживать касание вниз/вверх событие, чтобы маскировать то, что позволено случиться, но прежде, чем я пытаю, что я думал, что увидит, если есть другой способ сделать это? Я упускаю из виду предоставленный метод, который поможет мне здесь?
Спасибо.
Редактировать: решение. Был метод UIScrollViewDelegate, который предоставил мне то, что мне нужно для отслеживания касания макета. Обновленный код:
#pragma mark - UIScrollViewDelegate
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
if(scrollView == self.mainCollectionView &&
self.scrollingView == self.mainCollectionView){
CGFloat x = self.mainCollectionView.contentOffset.x/self.mainCollectionView.bounds.size.width * SM_IPHONE_THUMB_CONTAINER_SIZE; // cell width + spacing 48 + 8
CGFloat y = 0;
CGPoint contentOffset = CGPointMake(x, y);
self.thumbsCollectionView.contentOffset = contentOffset;
}
else if(scrollView == self.thumbsCollectionView &&
self.scrollingView == self.thumbsCollectionView){
CGFloat x = self.thumbsCollectionView.contentOffset.x/SM_IPHONE_THUMB_CONTAINER_SIZE * self.mainCollectionView.frame.size.width; // cell width + spacing 48 + 8
CGFloat y = 0;
CGPoint contentOffset = CGPointMake(x, y);
self.mainCollectionView.contentOffset = contentOffset;
}
}
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
self.scrollingView = scrollView;
}
Спасибо. Это то, что я собирался сделать, хотя я собирался подклассифицировать UICollectionViews и отслеживать их события касания, чтобы отслеживать, какой из них активно прокручивается. Метод делегата, который вы предоставили, отлично работал после того, как я исправил математику для смещения. – VaporwareWolf