Vertikales Scrollen funktioniert nicht in UIScrollView und iOS7 und Xcode 5, obwohl kein Autolayout verwendet wird

8

Wenn ich UIScrollView in iOS 7 und Xcode 5 verwenden wollte, reagiert es nicht auf vertikales Scrollen. Zuerst ziehe ich ScrollView aus der Objektbibliothek in das Storyboard und lege die Größe auf width = 320 und height = 1500 fest, ziehe dann drei Beschriftungen mit der Maus nach y = 300, 800, 1200. Für Beschriftungen mit y-Koordinate Da es sich um 800 und 1200 handelt, verschiebe ich scrollview zuerst in den oberen Bereich, um diese Objekte auf die entsprechenden y-Werte zu setzen. Dann verbinde ich scrollview mit der Implementierungsdatei als outlet und in viewDidLoad method schreibe ich self.myScrollView.contentSize = CGSizeMake(320, 1500) . Und schließlich die Größe der scrollview bei width = 320 und height = 568 zurück. Und dann den Simulator ausführen, aber es reagiert nicht auf vertikales Scrollen. Dann habe ich use autolayout abgewählt und den Simulator erneut ausgeführt, es funktioniert immer noch nicht.

Wie kann ich das Problem beheben? Oder kann mir irgendjemand nützliche Tutorials über UIScrollView in iOS 7 und Xcode 5 mitteilen (das ist wichtig, da jedes Tutorial, das ich gelesen habe, auf der vorherigen Version basiert)?

Ich benutze Xcode 5.0.2.

Danke.

    
Blaszard 09.01.2014, 08:52
quelle

10 Antworten

13

Hier ist Selbstantwort

Ich habe self.myScrollView.contentSize = CGRectMake(320, 1500); von viewWillAppear auf viewDidLoad geändert und starte den Simulator, dann funktioniert das Scrollen aus irgendwelchen Gründen jetzt. Wie ich im ursprünglichen Post gesagt habe, habe ich es zuerst in viewDidLoad geschrieben und nach dem Lesen von kkocabiyiks Antwort zu viewWillAppear verschoben. Ich bin mir nicht sicher, warum mein ursprünglicher Code nicht funktioniert hat - vielleicht weil ich meinen Code während meiner Hilfe von Mani und Rashad leicht modifiziert habe, aber den obigen Code gleichzeitig in viewWillAppear gehalten habe.

>

Für diejenigen, die in derselben Falle gefangen wären und in Zukunft zu dieser Frage kommen würden, konnte ich das Problem mit diesen Einstellungen beheben:

  • schreibe self.myScrollView.contentSize = CGSizeMake(320, 1500); in viewDidLoad
  • Verbinden Sie UIScrollView vom Storyboard mit myScrollView als IBOutlet-Eigenschaft
  • kein automatisches Layout verwenden
  • setze x = 0, y = 0, width = 320, height = 568, um im Storyboard
  • zu scrollen

Beachten Sie auch, dass die Verwendung des automatischen Layouts nicht funktioniert. Auch die Verwendung von automatischem Layout und die Einstellung von contentsize in viewWillAppear funktioniert nicht.

Ich würde gerne alle schätzen, die mir in dieser Frage helfen. Danke.

    
Blaszard 09.01.2014, 10:21
quelle
13

Sehen Sie sich dieses Video an. Es zeigt, wie man UIScrollLayout benutzt und automatisch mit XCode 5 / iOS 7 startet.

    
jaxvy 12.02.2014 20:54
quelle
10

Sie müssen scrollview height as screensize or less than contentsize. einstellen Nur dann wird vertikal geblättert. (contensize & gt; scrollview.height) Und überprüfen Sie bool vairable scrollEnabled als YES .

    
Mani 09.01.2014 08:54
quelle
6

Setze x = 0 und y = 0, Du musst die Inhaltsgröße auf (320,1500) setzen, nicht auf x und y. x und y definiert den Startort der Bildlaufansicht und nicht die Inhaltsgröße. Für die Inhaltsgröße:

%Vor%

Hoffe das hilft ..:)

    
Rashad 09.01.2014 09:05
quelle
5

Es spielt keine Rolle, ob Sie den Rahmen eines Elements ändern, wenn Sie AutoLayout verwenden. View Frames mit AutoLayout werden von ihm behandelt, so dass es ignoriert, was Sie in viewDidLoad Methode getan haben. Wenn Sie müssen AutoLayout verwenden, können Sie kopieren, was Sie getan haben in viewDidLoad bis viewDidAppear , so dass es die ganze Arbeit getan wird, nachdem AutoLayout es funktioniert.

    
kkocabiyik 09.01.2014 08:57
quelle
3

Dieses Tutorial hat mein Leben mit Scrollviews gerettet: Scroll Automatisches Layout-Lernprogramm anzeigen

    
allemattio 09.01.2014 09:58
quelle
3

Ich hatte auch das gleiche Problem mit Xcode 6. Folgen Sie diesen Schritten , es ist wirklich sehr hilfreich und spart Ihre Zeit .

    
iKT 15.12.2014 08:11
quelle
2

Ich habe festgestellt, dass die Scrollview-Höhe im Storyboard nicht größer sein kann als der Bildschirm. Wenn Sie größer wollen, dann tun Sie es programmatisch, nicht im Storyboard.

    
fullMoon 18.02.2015 15:20
quelle
2

onOffScroll.contentSize = CGSizeMake(content width,content height);

Verwenden Sie die Methode viewDidLayoutSubviews und verwenden Sie den Code in dieser Methode. Es kann dir helfen.

    
vikrant tanwar 30.12.2015 05:33
quelle
1

Ich hatte ein Problem, bei dem meine Bildlaufansicht nicht funktionierte, wenn ich ein TextField oder ein Bild hinzufügte. Ich löste dieses Problem, indem ich alles in eine STACK VIEW legte. Dann, als ich es durch mein Telefon lief, konnte ich scrollen.

    
user9160004 02.01.2018 14:46
quelle