Mam UITextView z jakimś tekstem. Wszystko było w porządku z iOS 6, ale teraz w iOS 7 pozostawia puste miejsce na górze, a następnie umieszcza tekst poniżej środka widoku tekstu.
Nie ustawiłem żadnego contentOffSet. Proszę pomóż!
ios
iphone
xcode
cocoa-touch
uitextfield
Ali Sufyan
źródło
źródło
Obecna odpowiedź, której udzielił IronManGill, nie jest dobrym rozwiązaniem, ponieważ nie opiera się na zrozumieniu, dlaczego problem występuje w pierwszej kolejności.
Odpowiedź jrturtona również nie jest najczystszym sposobem rozwiązania tego problemu. Nie musisz nadpisywać. Nie komplikuj!
Wystarczy, że ustawisz:
w metodzie viewDidLoad.
Sprawdź dokumenty: https://developer.apple.com/documentation/uikit/uiviewcontroller/1621372-automaticallyadjustsscrollviewin
źródło
automaticallyAdjustsScrollViewInsets
jest przestarzałe. Z iOS11 użyjcontentInsetAdjustmentBehavior
W programie Interface Builder
źródło
To zadziałało dla mnie
źródło
Idź do
Interface Builder
:view controller
który zawieratext view
Adjusts Scroll View Insets
właściwośćźródło
Naprawdę zastanawiam się, czy to prawdziwa funkcja… Ta 64-punktowa automatyczna wstawka jest dodawana tylko wtedy, gdy
UIScrollView
lubUITextView
jako większa głębia wszystkich podwidoków widoku kontrolera widoku. Na przykład, jeśli dodasz widok za (tutaj mówię o buforze z, a nie o imbricacji widoku) widokiem przewijania, ta wstawka 64 punktów nie jest automatycznie dodawana.Na przykład ten dodaje wstawkę:
W tym przypadku wstawka nie jest dodawana:
Wydaje mi się to naprawdę dziwne… Dlaczego system operacyjny miałby patrzeć na głębię widoku, aby zdecydować, czy powinien rozszerzyć widok?
źródło
Szybka (Xcode 6)
źródło
viewDidLoad
kontrolerze widoku z widokiem tekstowym.automaticallyAdjustsScrollViewInsets
jest przestarzałe. Z iOS11 użyjcontentInsetAdjustmentBehavior
Możesz usunąć puste miejsce u góry
UITextView
, dodając:źródło
Rozwiązałem ten problem, ustawiając przesunięcie zawartości na wartość ujemną. Oto kod Swift.
źródło
[self.textView setContentOffset:CGPointMake(0.f, -self.topLayoutGuide.length) animated:NO];
Musisz zrozumieć, że dotyczy to paska nawigacji:
źródło
Wypróbowałem następującą sztuczkę, zadziałało.
źródło
Rozwiązanie dla Swift 4:
źródło
Jest to nieprofesjonalne rozwiązanie, jestem pewien ... Ale samo umieszczenie pustej etykiety za widokiem tekstu rozwiązuje problem.
źródło
To właśnie zadziałało dla mnie (dostępne z iOS 7)
źródło