iPhone SDK UIScrollView nicht bekommen Touch-Ereignisse, nachdem sie bewegt
-
26-09-2019 - |
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!
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];