2009-06-18 7 views
1

J'ai un UIScrollView avec UIImageViews imbriqués. Chaque visionnage d'image peut zoomer, mais lorsque j'essaie de faire défiler la vue de défilement interne tout en zoomant sur l'image, la vue de défilement extérieure la prend et change d'image.UISCrollViews imbriqués - Empêcher le Scrollview parent de défiler lorsque zoomé sur l'enfant

Comment puis-je empêcher que cela se produise de sorte que la scrollview externe ne défile que lorsque l'intérieur n'est pas zoomé?

Répondre

5

Je posterai ma réponse que je dois travailler pour aider les autres.

Un moyen facile de gérer UIScrollViews imbriqué est de partager le même délégué. De cette façon, lorsque vous détectez un défilement UIScrollView, vous pouvez facilement partager la logique du contrôleur et appliquer les paramètres à l'autre. Pour résoudre ce problème particulier, j'avais tout ce que je devais faire était de garder un BOOL avec l'état de zoom actuel. Une fois que l'application a détecté que le zoom interne zoomait,

- (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]; 
    } 
}