【问题标题】:Blank space at top of UITextView in iOS 10iOS 10 中 UITextView 顶部的空白区域
【发布时间】:2013-09-26 17:41:11
【问题描述】:

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

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

【问题讨论】:

    标签: ios iphone xcode cocoa-touch uitextfield


    【解决方案1】:

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

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

    self.automaticallyAdjustsScrollViewInsets = NO
    

    【讨论】:

    • 这是一个更好的答案,因为它不仅解决了如何纠正问题,而且解决了问题发生的原因。
    • 顺便说一句,您不必继承和覆盖。实例化 UITextView 后,只需将 automaticAdjustsScrollViewInsets 设置为 NO。
    • @leftspin 这是一种非常罕见的情况,您没有对视图控制器进行子类化。覆盖该方法意味着您的代码仍然可以在较低的 iOS 版本上运行 - 设置该属性意味着您需要先进行兼容性检查。
    • 如果我的模型视图控制器在 UINavigationController 之外,偏移量会被清除吗?这有点疯狂......只有当我的文本视图与顶部对齐时,这种行为才是正确的,否则它就是垃圾......有人可以解释为什么苹果会这样做吗?
    • @jrturton 很抱歉这是一个较旧的帖子,请原谅我是 Objective-c 的新手,但这目前是 UIViewController 的一个属性......它曾经是一种方法吗?跨度>
    【解决方案2】:

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

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

    您只需要设置以下内容:

    self.automaticallyAdjustsScrollViewInsets = NO;
    

    在 viewDidLoad 方法中。

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

    【讨论】:

    • 在情节提要中进行更改有时可能会更好。转到“Identity Inspector”->“User Defined Runtime Attributes”,并在那里添加一个定义。
    • automaticallyAdjustsScrollViewInsets 已弃用。从 iOS11 开始,使用contentInsetAdjustmentBehavior
    【解决方案3】:

    在界面生成器中,

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

    【讨论】:

    • 这是我在 ios8 中最简单的解决方案
    • 注意:它是 UIViewController 的一个属性。找不到然后意识到我没有完全阅读文本
    【解决方案4】:

    这对我有用

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

    【讨论】:

      【解决方案5】:

      转到Interface Builder

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

      【讨论】:

      • 这就是我要找的。您也可以通过将“self.automaticallyAdjustsScrollViewInsets = false”添加到 viewController 来做到这一点
      • 这是一个很好且直截了当的答案,恰好结束了我对“为什么此文本未显示”的搜索。
      【解决方案6】:

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

      比如这个加了插页:

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

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

      【讨论】:

        【解决方案7】:

        在 swift (Xcode 6) 上

         self.automaticallyAdjustsScrollViewInsets = false
        

        【讨论】:

        • 在带有文本视图的视图控制器的viewDidLoad 中执行此操作。
        • automaticallyAdjustsScrollViewInsets 已弃用。从iOS11,使用contentInsetAdjustmentBehavior
        【解决方案8】:

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

        yourTextView.textContainerInset = UIEdgeInsetsZero;
        

        【讨论】:

          【解决方案9】:

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

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

          【讨论】:

          • 这是保持插入和在半透明栏下正确滚动的最佳解决方案。我会建议这种修改。 [self.textView setContentOffset:CGPointMake(0.f, -self.topLayoutGuide.length) animated:NO];
          • 除此之外没有什么对我有用。斯威夫特,Xcode 9.1。
          【解决方案10】:

          你要明白的是,这和导航栏有关:

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

          【讨论】:

            【解决方案11】:

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

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

            【讨论】:

              【解决方案12】:

              Swift 4 的解决方案:

              textView.textContainerInset = UIEdgeInsets.zero
              

              【讨论】:

                【解决方案13】:

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

                【讨论】:

                • 这不是解决方案 =)
                【解决方案14】:

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

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

                【讨论】: