Ich habe UITextView mit etwas Text darin. Mit iOS 6 war alles in Ordnung, aber jetzt mit iOS 7 bleibt der freie Platz oben und der Text wird unterhalb der Textansicht platziert.
Ich habe keine contentOffSet gesetzt. Bitte helfen!
Eine Textansicht ist eine Bildlaufansicht. View Controller fügen automatisch einen Inhaltsoffset für die Bildlaufansicht hinzu, da davon ausgegangen wird, dass sie hinter der Navigationsleiste und der Statusleiste nach oben scrollen möchten.
Um dies zu verhindern, legen Sie im View-Controller, der die Textansicht enthält, die folgende Eigenschaft fest:
self.automaticallyAdjustsScrollViewInsets = NO
Die aktuelle Antwort, die IronManGill gegeben hat, ist keine gute Lösung, da sie nicht darauf basiert, zu verstehen, warum das Problem überhaupt auftritt.
die Antwort von Jrturton ist auch nicht der sauberste Weg, um es zu lösen. Sie müssen nicht überschreiben. Halte es einfach!
Sie müssen lediglich Folgendes einstellen:
self.automaticallyAdjustsScrollViewInsets = NO;
in der viewDidLoad-Methode.
Überprüfen Sie die Dokumente: https://developer.Apple.com/documentation/uikit/uiviewcontroller/1621372-automaticallyadjustsscrollviewin
Im Interface Builder
Das hat bei mir funktioniert
textView.textContainerInset = UIEdgeInsetsZero;
textView.textContainer.lineFragmentPadding = 0;
Ich frage mich wirklich, ob dies ein echtes Feature ist… Diese automatische 64-Punkte-Einfügung wird nur hinzugefügt, wenn die Variable UIScrollView
oder UITextView
die größere Tiefe aller Unteransichten der Ansicht des View-Controllers ist. Wenn Sie beispielsweise eine Ansicht hinter der Bildlaufansicht hinzufügen (hier spreche ich von Z-Buffer, nicht um Ansichtsblöcke), wird dieser 64-Punkte-Einzug nicht automatisch hinzugefügt.
Zum Beispiel wird hier der Einschub hinzugefügt:
In diesem Fall wird der Einschub nicht hinzugefügt:
Dies erscheint mir merkwürdig… Warum sollte das Betriebssystem die Tiefe der Ansicht betrachten, um zu entscheiden, ob es die Ansicht erweitern soll?
Sie können den leeren Bereich über Ihrer UITextView
löschen, indem Sie Folgendes hinzufügen:
yourTextView.textContainerInset = UIEdgeInsetsZero;
Auf Swift (Xcode 6)
self.automaticallyAdjustsScrollViewInsets = false
Ich habe dieses Problem behoben, indem ich den Inhaltsversatz auf einen negativen Wert gesetzt habe. Hier ist Swift-Code.
yourTextView.setContentOffset(CGPoint(x: 0, y: -150), animated: true)
Ich habe den folgenden Trick ausprobiert, es hat funktioniert.
- (void)viewDidLoad{
self.textView.scrollEnabled = NO;
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
self.textView.scrollEnabled = YES;
}
Was Sie verstehen müssen, ist, dass sich dies auf die Navigationsleiste bezieht:
Ich bin mir sicher, dass dies eine unprofessionelle Lösung ist. Wenn Sie jedoch ein leeres Etikett hinter die Textansicht setzen, wird das Problem gelöst.
Lösung für Swift 4:
textView.textContainerInset = UIEdgeInsets.zero
Das hat gerade für mich funktioniert (verfügbar ab iOS 7)
[<#your UITextViewInstance#> setTextContainerInset:UIEdgeInsetsZero];