IOS10中 UITextView 顶部的空白区域

我有一个 UITextView,里面有一些文本。在 iOS6中一切都很好,但是现在在 iOS7中,它在顶部留下了空白,然后将文本放置在文本视图的中间。enter image description here

我没有设置任何内容。 救命啊!

42150 次浏览

文本视图是滚动视图。视图控制器将自动为滚动视图添加内容偏移量,因为假定它们想要在导航栏和状态栏后面向上滚动。

若要防止这种情况,请在包含文本视图的视图控制器上设置以下属性:

self.automaticallyAdjustsScrollViewInsets = NO

我真的想知道这是否是一个真正的功能... 这64点自动插入只有当 UIScrollViewUITextView作为视图控制器的视图的所有子视图的更大深度时才添加。例如,如果你在滚动视图后面添加一个视图(这里我说的是 z-buffer,而不是 view imbrication) ,这个64点的插入不会自动添加。

例如,这个插图添加了:

enter image description here

在这种情况下,不添加插入:

enter image description here

这对我来说真的很奇怪... 为什么操作系统要看视图的深度来决定是否应该扩展视图?

在 Interface Builder 里,

  • 选择包含 UITextView 的视图控制器。
  • 去属性检查员那里。
  • Uncheck "Adjust Scroll View Insets."

IronManGill 给出的当前答案不是一个好的解决方案,因为它不是基于对问题发生的原因的理解。

Jrturton 的答案也不是最干净的解决方法。你不需要覆盖。保持简单!

您只需要设置以下内容:

self.automaticallyAdjustsScrollViewInsets = NO;

in the viewDidLoad method.

看看这些文件: https://developer.apple.com/documentation/uikit/uiviewcontroller/1621372-automaticallyadjustsscrollviewin

这是一个不专业的解决方案,我确信... 但只要在文本视图后面加上一个空白标签就可以解决问题。

这对我来说很有用(可以从 iOS7中获得)

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

关于迅捷(Xcode 6)

 self.automaticallyAdjustsScrollViewInsets = false

您可以删除 UITextView顶部的空格,添加:

yourTextView.textContainerInset = UIEdgeInsetsZero;

This worked for me

textView.textContainerInset = UIEdgeInsetsZero;
textView.textContainer.lineFragmentPadding = 0;

I resolved this issue by setting content offset to a negative value. Here is Swift code.

yourTextView.setContentOffset(CGPoint(x: 0, y: -150), animated: true)

Go to Interface Builder:

  1. 选择包含 text viewview controller
  2. 取消检查 Adjusts Scroll View Insets属性

enter image description here

你需要理解的是,这与导航栏有关:

  • 如果内容位于导航栏下方,则希望视图控制器自动调整滚动视图插入(默认)。
  • 如果你的内容没有在导航条下面(你可能使用了顶部布局指南的顶部空间限制) ,你可以禁用自动滚动视图插入调整,就像大多数其他回复中提到的那样。

我试了下面的方法,成功了。

- (void)viewDidLoad{
self.textView.scrollEnabled = NO;
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
self.textView.scrollEnabled = YES;
}

Swift 4的解决方案:

textView.textContainerInset = UIEdgeInsets.zero