wake-up-neo.com

Leere Fläche oben in UITextView in iOS 10

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.enter image description here

Ich habe keine contentOffSet gesetzt. Bitte helfen!

114
Ali Sufyan

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
216
jrturton

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

58
Dumoko

Im Interface Builder

  • Wählen Sie den View Controller aus, der die UITextView enthält.
  • Gehen Sie zum Attributinspektor.
  • Deaktivieren Sie "Anpassen der Bildlaufansichten anpassen".
47
user2268026

Das hat bei mir funktioniert

textView.textContainerInset = UIEdgeInsetsZero;  
textView.textContainer.lineFragmentPadding = 0;
37
Ravi Bihani

Gehe zu Interface Builder

  1. Wählen Sie view controller aus, der Ihren text view enthält.
  2. deaktivieren Sie die Adjusts Scroll View Insets-Eigenschaft

 enter image description here

24
Aamir

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:

enter image description here

In diesem Fall wird der Einschub nicht hinzugefügt:

enter image description here

Dies erscheint mir merkwürdig… Warum sollte das Betriebssystem die Tiefe der Ansicht betrachten, um zu entscheiden, ob es die Ansicht erweitern soll? 

10
MonsieurDart

Sie können den leeren Bereich über Ihrer UITextView löschen, indem Sie Folgendes hinzufügen:

yourTextView.textContainerInset = UIEdgeInsetsZero;
6
lberyouk

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)
5
Saqib Omer

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;
}
1
casillas

Was Sie verstehen müssen, ist, dass sich dies auf die Navigationsleiste bezieht:

  • Wenn sich Ihr Inhalt unter der Navigationsleiste befindet, soll der Ansichts-Controller die Einfügungen der Bildlaufansicht automatisch anpassen (Standardeinstellung).
  • Wenn sich Ihr Inhalt nicht unter der Navigationsleiste befindet (Sie haben wahrscheinlich die oberste Layout-Anleitung für die Einschränkung des obersten Speicherbereichs verwendet), können Sie die automatische Anpassung der Bildlaufansicht deaktivieren, wie in den meisten anderen Antworten erwähnt.
1
CodeStage

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. 

0
Terence

Lösung für Swift 4:

textView.textContainerInset = UIEdgeInsets.zero
0

Das hat gerade für mich funktioniert (verfügbar ab iOS 7)

[<#your UITextViewInstance#> setTextContainerInset:UIEdgeInsetsZero];
0
RyanTCB