117

我有 UITextView,里面有一些文字。在 iOS 6 上一切都很好,但现在在 iOS 7 上,它会在顶部留下空白区域,然后将文本放在 textview 的中间下方。在此处输入图像描述

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

4

14 回答 14

217

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

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

self.automaticallyAdjustsScrollViewInsets = NO
于 2013-09-21T11:51:37.383 回答
58

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

jrturton 的回答也不是最干净的解决方法。你不需要覆盖。把事情简单化!

您只需要设置以下内容:

self.automaticallyAdjustsScrollViewInsets = NO;

在 viewDidLoad 方法中。

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

于 2013-10-31T12:26:29.917 回答
46

在界面生成器中,

  • 选择包含 UITextView 的视图控制器。
  • 转到属性检查器。
  • 取消选中“调整滚动视图插图”。
于 2013-10-13T21:21:48.080 回答
37

这对我有用

textView.textContainerInset = UIEdgeInsetsZero;  
textView.textContainer.lineFragmentPadding = 0;
于 2015-04-17T05:49:49.973 回答
24

前往Interface Builder

  1. 选择view controller包含您的text view
  2. 取消选中Adjusts Scroll View Insets属性

在此处输入图像描述

于 2016-01-10T07:06:48.913 回答
10

我真的很想知道这是否是一个真正的功能......这个 64 点自动插入仅在视图控制器视图的所有子视图的深度更大UIScrollView时添加。UITextView例如,如果您在滚动视图后面添加一个视图(这里我说的是 z-buffer,而不是视图叠层),则不会自动添加这个 64 点插图。

例如,这个添加了插图:

在此处输入图像描述

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

在此处输入图像描述

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

于 2013-09-27T08:05:46.443 回答
6

您可以UITextView通过添加删除顶部的空白空间:

yourTextView.textContainerInset = UIEdgeInsetsZero;
于 2015-02-28T22:02:44.057 回答
6

快速(Xcode 6)

 self.automaticallyAdjustsScrollViewInsets = false
于 2015-02-26T18:16:40.337 回答
5

我通过将内容偏移设置为负值解决了这个问题。这是斯威夫特代码。

yourTextView.setContentOffset(CGPoint(x: 0, y: -150), animated: true)
于 2015-08-04T12:30:13.527 回答
1

Swift 4 的解决方案:

textView.textContainerInset = UIEdgeInsets.zero
于 2018-10-19T13:00:09.543 回答
1

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

  • 如果您的内容位于导航栏下方,您希望视图控制器自动调整滚动视图插图(默认)。
  • 如果您的内容不在导航栏下方(您可能使用顶部布局指南来限制顶部空间),您可以禁用自动滚动视图插图调整,就像大多数其他回复中提到的那样。
于 2016-01-28T20:15:12.467 回答
1

我尝试了以下技巧,它奏效了。

- (void)viewDidLoad{
   self.textView.scrollEnabled = NO;  
}       
- (void)viewDidAppear:(BOOL)animated {
   [super viewDidAppear:animated];
   self.textView.scrollEnabled = YES;
}
于 2017-06-23T21:10:30.593 回答
0

这是一个不专业的解决方案,我敢肯定......但只需在 textview 后面放置一个空白标签即可解决问题。

于 2014-09-03T18:20:31.997 回答
0

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

[<#your UITextViewInstance#> setTextContainerInset:UIEdgeInsetsZero];
于 2015-01-09T00:04:04.490 回答