Frage

Ich bin Subklassen UIScrollView und auf das beginne ich dieses ShowsScrollView mit einigen Einzelteilen füllen. es, ich Setup-Rahmen und Content dieser ShowsScrollView Nach dem Befüllen. Alles funktioniert jetzt in Ordnung, ich erhalte berührt Ereignisse, Scrollen funktioniert ..

Aber nach einer Drehung um Landschaft, die ich ändern x und y-Koordinaten von ShowsScrollView Rahmen, es von unten zu bewegen, rechts nach oben. Dann die Größe ich es (ändern Breite und Höhe des ShowsScrollView Rahmen) und Nachorderware in dieser Rolle. Am Ende habe ich Setup neue Content. Jetzt erhalte ich berührt Veranstaltung nur auf den ersten 1/4 der Scrollview, auch nur Scrollen arbeiten auf 1/4 der Scrollview, aber blättern alle Elemente in Scrollview. Nachdem alle Aktionen schreibe ich ein Protokoll: NSLog (@ "Viewcontroller: setLandscape beendet: Größe:% f,% f-Gehalt:% f,% f", scrollView.frame.size.width, scrollView.frame.size.height, Scroll .contentSize.width, scrollView.contentSize.height);

Werte korrekt sind: Viewcontroller: setLandscape beendet: Größe: 390.000000, 723.000000 Inhalt: 390.000000,950.000000

Ein zurück zu Portrait zu drehen, ich verschieben und die Größe alles, was zurück und alles funktioniert ..

Bitte Hilfe!

War es hilfreich?

Lösung

Ich hatte das gleiche Problem und schaffte es, indem die Größe der self.view wieder zu arbeiten, nachdem die Scroll des Rahmens zu ändern. Ich weiß nicht, warum das funktioniert, aber es funktioniert.

// Set the view's frame
if (UIDeviceOrientationIsLandscape(toOrientation)) {
 [self.view setSize:CGSizeMake(1024, 724)];
} else {
 [self.view setSize:CGSizeMake(768, 960)];
}

// Set scrollview frame
if (UIInterfaceOrientationIsLandscape(toOrientation)) {
 self.scrollView.frame = CGRectMake(0, 0, 100, 300);
 self.scrollView.contentSize = CGSizeMake(100, 600);
}
else {
 self.scrollView.frame = CGRectMake(0, 0, 300, 100);
 self.scrollView.contentSize = CGSizeMake(600, 100);
}

// Move your content around here

// Set the view's frame again
if (UIDeviceOrientationIsLandscape(toOrientation)) {
 [self.view setSize:CGSizeMake(1024, 724)];
} else {
 [self.view setSize:CGSizeMake(768, 960)];
}

Andere Tipps

Sie haben scrollView bis vor dem superView zu bringen, zum Beispiel:

[self.view bringSubviewToFron:scrollView];
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top