Вложенные UISCrollViews - предотвращение прокрутки родительского прокрутки при увеличении дочернего - PullRequest
1 голос
/ 18 июня 2009

У меня есть UIScrollView с вложенными UIImageViews. Каждое изображение может увеличиваться, но когда я пытаюсь прокрутить внутренний вид прокрутки при увеличении изображения, внешний вид прокрутки поднимает его и переключает изображения.

Как я могу предотвратить это, чтобы внешний вид прокрутки прокручивался только тогда, когда внутренний не увеличен?

1 Ответ

5 голосов
/ 18 июня 2009

Я опубликую свой ответ, который я получил, чтобы помогать другим.

Одним из простых способов обработки вложенных UIScrollViews является использование одного и того же делегата. Таким образом, когда вы обнаружите одну прокрутку UIScrollView, вы можете легко поделиться логикой контроллера и применить настройки к другому.

Чтобы решить эту конкретную проблему, с которой я столкнулся, все, что мне нужно было сделать, это сохранить BOOL с текущим состоянием масштабирования. Как только приложение обнаружит, что масштаб внутреннего прокрутки увеличивается,

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView1 {
    return [innerScrollViews objectAtIndex:[self indexOfComicViewWithOffset:currentOffset]];    
}

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView1 withView:(UIView *)view atScale:(float)scale {
    if (scale == 1) {
        zooming = NO;
        [outerScrollView setScrollEnabled:YES];
    } else {
        zooming = YES;
        [outerScrollView setScrollEnabled:NO];
    }
}
...