iOS 10中UITextView顶部的空白区域

时间:2013-09-21 11:18:28

标签: ios iphone xcode cocoa-touch uitextfield

我有UITextView,里面有一些文字。 iOS 6的一切都很好,但现在使用iOS 7,它将空白留在顶部,然后将文本放在textview的中间。enter image description here

我没有设置任何contentOffSet。 请帮助!

14 个答案:

答案 0 :(得分:216)

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

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

self.automaticallyAdjustsScrollViewInsets = NO

答案 1 :(得分:58)

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

jrturton的回答也不是解决问题最简洁的方法。你不需要覆盖。保持简单!

您只需要设置以下内容:

self.automaticallyAdjustsScrollViewInsets = NO;

在viewDidLoad方法中。

查看文档: https://developer.apple.com/documentation/uikit/uiviewcontroller/1621372-automaticallyadjustsscrollviewin

答案 2 :(得分:47)

在Interface Builder中,

  • 选择包含UITextView的视图控制器。
  • 转到属性检查器。
  • 取消选中“调整滚动视图插图。”

答案 3 :(得分:37)

这对我有用

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

答案 4 :(得分:24)

转到Interface Builder

  1. 选择包含view controller
  2. text view
  3. 取消选中Adjusts Scroll View Insets属性
  4. enter image description here

答案 5 :(得分:10)

我真的很想知道这是否是一个真正的特征...这个64点自动插入仅在UIScrollViewUITextView作为视图控制器视图的所有子视图的更深处时添加。例如,如果您在后面添加一个视图(这里我说的是z-buffer,而不是视图重叠)滚动视图,则不会自动添加此64点插入。

例如,这个添加了插图:

enter image description here

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

enter image description here

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

答案 6 :(得分:6)

在swift上(Xcode 6)

 self.automaticallyAdjustsScrollViewInsets = false

答案 7 :(得分:6)

您可以添加以下内容删除UITextView顶部的空白区域:

yourTextView.textContainerInset = UIEdgeInsetsZero;

答案 8 :(得分:5)

我通过将内容偏移设置为负值来解决此问题。这是Swift代码。

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

答案 9 :(得分:1)

您必须了解的是,这与导航栏有关:

  • 如果您的内容位于导航栏下方,您希望视图控制器自动调整滚动视图插图(默认)。
  • 如果您的内容未进入导航栏(您可能使用顶部空间约束的顶部布局指南),则可以禁用大多数其他回复中提到的自动滚动视图插入调整。

答案 10 :(得分:1)

我尝试了以下技巧,但它确实有效。

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

答案 11 :(得分:0)

这是一个不专业的解决方案,我确定......但只是在textview后面放一个空白标签就能解决问题。

答案 12 :(得分:0)

这对我有用(可从iOS 7获得)

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

答案 13 :(得分:0)

Swift 4解决方案:

textView.textContainerInset = UIEdgeInsets.zero