2010-12-27 24 views
2

Kann jemand raten, wie man beim Zoomen in iOS4 das Scrollen deaktiviert? Ich habe ein Dienstprogramm, das auf iOS3 arbeiten, und ich das Scrollen während des Zoomens durch zwingende setTransform Methode in Inhaltsansicht, zum Beispiel deaktiviert:UIScrollView: Scrolling beim Zoomen deaktivieren

- (void)setTransform:(CGAffineTransform)newValue; 
{ 
[(UIScrollView*)self.superview setScrollEnabled:NO]; 
[super setTransform:newValue]; 
} 

aber in iOS4 dieser Trick funktioniert nicht.

Vielen Dank im Voraus.

+1

Ich denke nicht, dass Sie können, wenn die Inhaltsgröße für die Dauer des Zooms und jede Umwandlung, die stattfindet, kleiner als der Rahmen der Bildlaufansicht ist. (d. h. eine Zoomoperation vergrößert den Inhaltsbereich, sobald der Inhaltsbereich größer ist als der Rahmen, den die Bildlaufansicht scrollt. Daher muss der Inhaltsbereich immer kleiner als der Rahmen sein.) – JoePasq

Antwort

4

Ich denke, einige der UIScrollViewDelegate Methoden wie diese verwenden:

Methode
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view //available starting with iOS 3.2 
{ 
    [scrollView setScrollEnabled:FALSE]; 
} 

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale 
{ 
    if(scale == 1) 
     [scrollView setScrollEnabled:TRUE]; 
} 
+0

Superb Man .. Awesome Solution. Danke Kumpel .. :) –

0

versucht George als es schien, dass es funktionieren würde, hatte aber kein Glück. Überprüfte Dokumente und es heißt "Wenn Scrollen deaktiviert ist, akzeptiert die Scroll-Ansicht keine Berührungsereignisse; sie leitet sie in der Antwortkette weiter." Das könnte also nicht funktionieren, da wir die Zoom-Touch-Ereignisse erhalten. Also habe ich versucht, die folgend und es funktioniert ...

- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view 
{ 
    peggedContentOffset = scrollView.contentOffset; 
} 

- (void) scrollViewDidZoom:(UIScrollView *)scrollView 
{ 
    scrollView.contentOffset = peggedContentOffset; 
} 

Dies funktioniert durch die Content Grabbing, wenn unser Zoom startet und das Zurücksetzen es ständig, während wir Zoomen. Ich bin mir sicher, ein etwas ausgefallenerer Code könnte den Zoom auf Ihren Zoom-Punkt zentrieren, während dies nur den oberen Rand der Tabellenansicht verriegelt ... aber es macht den Job.

Verwandte Themen