• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

UIScrollView, Zoomen und Scrollen

nelfisch

Carola
Registriert
15.03.08
Beiträge
108
Hallöle liebe Apfeltalk´ler,

ich wende mich wieder mit einem (meiner Meinung nach echt hartnäckigem) Problem an euch: Ich habe in meiner App ein UIScrollView mit ganz vielen Buttons und Labeln drauf. Mangels des kleinen iPhone-Bildschirms will ich dem Benutzer nun die Möglichkeit geben, den Content zu zoomen. Gesagt getan, funktioniert einwandfrei, etwas verpixelt aber damit muss man wohl leben. Auch das resetten bei doubleTouch geht (habe vorläufig das ScrollView nicht bis zum äußersten Rand gemacht, da das noch die die Touches trackt, sondern nur der viewController darunter. Werde mir wahrscheinlich einfach eine eigene UIScrollView-Klasse schreiben und die touch-Methoden darin erweitern). So, wenn ich aber nun per
Code:
sView.zoomScale = 1.0f;
das zoomen wieder rückgängig gemacht habe, dann funktioniert das scrollen nicht mehr?! Außerdem ist mir aufgefallen, dass ich wenn ich maximal gezoomt habe, also auf 1.5f, nicht mehr bis zum (normalen) unteren Rand scrollen kann. Also man kann zwar generell scrollen, aber nicht bis zum wirklichen Ende des UIScrollViews.
Habt ihr ne Idee wie man das beheben könnte? Wäre echt wichtig!
 
Poste mal bitte Code und die wichtigen XIBs. Dann sehen wir mal weiter.

Gruss ppocket
 
Allllsssso,

hier erst mal der Code von dem ViewController, in dem ich das UIScrollView benutze und ein bisschen an ihm rumwerkel:
Code:
#pragma mark -
#pragma mark support UIScrollView, especially zooming
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
	NSLog(@"täääääp");
		UITouch *touch = [[event allTouches] anyObject];
		if (touch.tapCount == 2) {
			NSLog(@"yea, zweimal!");
			sView.zoomScale = 0.9f;
			sView.zoomScale = 1.0f;
			NSLog(@"sView: %@", sView);
		}
}
// The designated initializer. Override to perform setup that is required before the view is loaded.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
        // Custom initialization
		self.title = self.title;
		//setting up sView
		sView.delegate = self;
		sView.userInteractionEnabled = YES;
		sView.minimumZoomScale = 1.0;
		sView.maximumZoomScale = 2.0;
		sView.bouncesZoom = NO;
    }
    return self;
}
-(id)init{
	if(self = [super init]){
		self.sizeHeight = 0;
		self.sizeWidht = 0;
		//setting up sView
		sView.delegate = self;
		sView.minimumZoomScale = 1.0;
		sView.maximumZoomScale = 2.0;
		sView.bouncesZoom = NO;
	}
	return self;
}

im Anhang dann das XIB, habe das etwas abgeändert als das, was ich in meinem Projekt habe, aber alles was die Eintellungen vom ScrollView betrifft sollte gleich sein, geht mir nur um den Content und so :) Falls ihr euch wundert: auf den Buttons sind normalerweise noch UILabels bzw. UIImageView´s drauf und das ScrollView habe ich nicht bis zum Rand gemacht, weil ich halt die touches tracken wollte und noch nicht dazu gekommen bin, mir eine eigene Subclass vom UIScrollView zu schreiben, die das zusätzlich nocht macht, also zu dem "normalen" scrollen...
Grüße,
nelfisch
 

Anhänge

Mhm, noch keine Erkenntnis liebe Apfeltalkler? Wäre echt richtig geil wenn das klappen würde...:)