Ответы:
Текстовое представление - это представление с прокруткой. Контроллеры представлений будут автоматически добавлять смещение содержимого для прокрутки представлений, поскольку предполагается, что они захотят прокрутить вверх за панелью навигации и строкой состояния.
Чтобы предотвратить это, установите следующее свойство в контроллере представления, содержащем текстовое представление:
self.automaticallyAdjustsScrollViewInsets = NO
Текущий ответ, который дал IronManGill, не является хорошим решением, потому что он не основан на понимании того, почему проблема возникает вообще.
Ответ jrturton также не самый чистый способ решить эту проблему. Вам не нужно отменять. Будь проще!
Все, что вам нужно, это установить следующее:
self.automaticallyAdjustsScrollViewInsets = NO;
в методе viewDidLoad.
Ознакомьтесь с документами: https://developer.apple.com/documentation/uikit/uiviewcontroller/1621372-automaticallyadjustsscrollviewin
automaticallyAdjustsScrollViewInsets
устарела. Из iOS11, используйтеcontentInsetAdjustmentBehavior
В Интерфейсном Разработчике
Это сработало для меня
textView.textContainerInset = UIEdgeInsetsZero;
textView.textContainer.lineFragmentPadding = 0;
Перейти к Interface Builder
:
view controller
который содержит вашtext view
Adjusts Scroll View Insets
собственностиМне действительно интересно, настоящая ли это особенность… Эта автоматическая вставка на 64 пункта добавляется только тогда, когда UIScrollView
илиUITextView
как большая глубина всех подвидов представления контроллера представления. Например, если вы добавляете представление позади (здесь я говорю о z-буфере, а не о включении представления) от представления прокрутки, эта 64-точечная вставка не добавляется автоматически.
Например, здесь добавлена вставка:
В этом случае вставка не добавляется:
Мне это действительно кажется странным ... Почему ОС должна смотреть на глубину представления, чтобы решить, следует ли расширять представление?
На Swift (Xcode 6)
self.automaticallyAdjustsScrollViewInsets = false
viewDidLoad
контроллере представления с текстовым представлением.
automaticallyAdjustsScrollViewInsets
устарела. Из iOS11 используйтеcontentInsetAdjustmentBehavior
Я решил эту проблему, установив для смещения содержимого отрицательное значение. Вот код Swift.
yourTextView.setContentOffset(CGPoint(x: 0, y: -150), animated: true)
[self.textView setContentOffset:CGPointMake(0.f, -self.topLayoutGuide.length) animated:NO];
Вы должны понимать, что это относится к панели навигации:
Решение для Swift 4:
textView.textContainerInset = UIEdgeInsets.zero
Я уверен, что это непрофессиональное решение ... Но простая пустая метка позади текстового представления решает проблему.