【发布时间】:2015-02-19 22:13:10
【问题描述】:
我已经为文本视图设置了约束,如下图所示:
但正如您在模拟器上看到的,对于 ARTIST NAME 标签下的文本视图,contentOffset 是不同的。似乎文本视图首先尝试从底部显示文本,然后从顶部显示:
我想尝试在不使用任何代码的情况下解决此问题,但我添加了这个将文本视图滚动回顶部的方法:
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self.theTextView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:NO];
}
当我在[self.theTextView scrollRectToVisible:CGRectMake(0,0,1,1) animated:NO]行之前调试代码并打印出文本视图时,文本视图的contentOffset为0, 144.5:
(lldb) po self.theTextView
<UITextView: 0x7d26ac00; frame = (3 423; 153 90); text = 'Lorem ipsum dolor sit er ...'; clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x7bbbdf30>; layer = <CALayer: 0x7bbbd540>; contentOffset: {0, 144.5}; contentSize: {153, 243}>
[self.theTextView scrollRectToVisible:CGRectMake(0,0,1,1) animated:NO] 之后 contentOffset 为 0, 0:
(lldb) po self.theTextView
<UITextView: 0x7d26ac00; frame = (3 423; 153 90); text = 'Lorem ipsum dolor sit er ...'; clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x7bbbdf30>; layer = <CALayer: 0x7bbbd540>; contentOffset: {0, 0}; contentSize: {153, 243}>
但我可以弄清楚为什么约束会带来一些内容偏移问题。以及为什么在开始文本被转移。在没有任何约束的情况下,文本视图将“Lorem ipsum”显示为第一行,但在有约束的情况下,它显示“nulla pariatur...”,正如您在上图中看到的完整可见线一样,上面的行完全被切断了。
【问题讨论】:
-
我也有同样的问题。你解决了吗?我将 textview 的 setContentOffset 设置为 0,0 但没有任何区别。如果您已解决此问题,请告诉我。
-
@iOS 嘿,伙计,这对我来说是个老问题,所以我有一些技巧让它工作,但它对我来说以一种奇怪的方式工作。如你所知 UITextView 是一个 UIScrollView 孩子。因此,当您需要向上滚动内容时,您可以使用所有需要的方法将内容滚动到顶部,就像您对滚动视图所做的那样。我记得我已经创建了 UITextView 实例,并且在 viewDidLoad 中我以编程方式向上滚动了我的文本视图。但老实说,也许还有其他一些漂亮的解决方案可以避免这个文本转换问题。
-
谢谢 Alexander,我刚刚解决了 :)
-
@iOS 耶,没问题)
标签: ios8 uitextview uistoryboard autolayout