【发布时间】:2013-09-26 17:41:11
【问题描述】:
我有 UITextView,里面有一些文字。在 iOS 6 上一切都很好,但现在在 iOS 7 上它会在顶部留下空白区域,然后将文本放在 textview 的中间下方。
我没有设置任何 contentOffSet。 请帮忙!
【问题讨论】:
标签: ios iphone xcode cocoa-touch uitextfield
我有 UITextView,里面有一些文字。在 iOS 6 上一切都很好,但现在在 iOS 7 上它会在顶部留下空白区域,然后将文本放在 textview 的中间下方。
我没有设置任何 contentOffSet。 请帮忙!
【问题讨论】:
标签: ios iphone xcode cocoa-touch uitextfield
文本视图是滚动视图。视图控制器将自动为滚动视图添加内容偏移量,因为假设它们希望在导航栏和状态栏后面向上滚动。
为防止这种情况,请在包含文本视图的视图控制器上设置以下属性:
self.automaticallyAdjustsScrollViewInsets = NO
【讨论】:
IronManGill 给出的当前答案不是一个好的解决方案,因为它不是基于对问题发生原因的理解。
jrturton 的回答也不是最干净的解决方法。你不需要覆盖。保持简单!
您只需要设置以下内容:
self.automaticallyAdjustsScrollViewInsets = NO;
在 viewDidLoad 方法中。
【讨论】:
automaticallyAdjustsScrollViewInsets 已弃用。从 iOS11 开始,使用contentInsetAdjustmentBehavior
在界面生成器中,
【讨论】:
这对我有用
textView.textContainerInset = UIEdgeInsetsZero;
textView.textContainer.lineFragmentPadding = 0;
【讨论】:
我真的想知道这是否是一个真正的功能......这个64点自动插入仅在UIScrollView或UITextView作为视图控制器视图的所有子视图的更大深度时添加。例如,如果您在滚动视图后面添加一个视图(这里我说的是 z-buffer,而不是视图叠层),则不会自动添加这个 64 点插图。
比如这个加了插页:
在这种情况下,不添加插图:
这对我来说真的很奇怪......为什么操作系统会查看视图的深度来决定是否应该扩展视图?
【讨论】:
在 swift (Xcode 6) 上
self.automaticallyAdjustsScrollViewInsets = false
【讨论】:
viewDidLoad 中执行此操作。
automaticallyAdjustsScrollViewInsets 已弃用。从iOS11,使用contentInsetAdjustmentBehavior
您可以删除 UITextView 顶部的空格,方法是添加:
yourTextView.textContainerInset = UIEdgeInsetsZero;
【讨论】:
我通过将内容偏移设置为负值解决了这个问题。这是 Swift 代码。
yourTextView.setContentOffset(CGPoint(x: 0, y: -150), animated: true)
【讨论】:
[self.textView setContentOffset:CGPointMake(0.f, -self.topLayoutGuide.length) animated:NO];
你要明白的是,这和导航栏有关:
【讨论】:
我尝试了以下技巧,它奏效了。
- (void)viewDidLoad{
self.textView.scrollEnabled = NO;
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
self.textView.scrollEnabled = YES;
}
【讨论】:
Swift 4 的解决方案:
textView.textContainerInset = UIEdgeInsets.zero
【讨论】:
这是一个不专业的解决方案,我敢肯定......但只需在 textview 后面放置一个空白标签即可解决问题。
【讨论】:
这对我有用(从 iOS 7 可用)
[<#your UITextViewInstance#> setTextContainerInset:UIEdgeInsetsZero];
【讨论】: