2014-12-21 120 views
0

我已经设置的限制,以文本视图上,如下图:添加约束的UITextView变化contentOffset

enter image description here

但你可以在模拟器上看到contentOffset正在艺术家名称标签文本视图不同。好像文本视图试图从顶部首先显示来自底部的文本,然后:

enter image description here

我想尝试解决此问题没有任何代码,但是我已经加入这个方法滚动文本视图回顶部:

- (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 ...”,您可以在上面的图像中看到上面的行完全切断。

+0

我有同样的问题。你解决了吗?我将textview的setContentOffset设置为0,0,但没有区别。请让我知道你是否已经解决了这个问题。 – Geekoder

+0

@iOS嘿,对我来说这是一个老问题,所以我有一些技巧让它工作,但它对我来说是奇怪的。如您所知,UITextView是一个UIScrollView子项。因此,您可以使用所有需要的方法将内容滚动到顶部,就像您需要向上滚动滚动视图一样。我记得我已经创建了UITextView实例,并在viewDidLoad中以编程方式滚动了我的文本视图。但说实话,也许有另一个美丽的解决方案来避免这个文本转移问题。 –

+0

谢谢亚历山大,我刚刚解决了它:) – Geekoder

回答

1

在layoutSubviews如果的UIView和viewDidLayoutSubview广告下面一行:

[textview setContentOffset:CGPointMake(0,0)];

这为我工作。