UITextView Scrolling / ContainHeight异常行为

时间:2013-10-10 11:27:47

标签: iphone ios uitextview uitextviewdelegate

我需要根据内容高度动态更改UITextView Frame高度。即所以当包含高度增加而不是允许用户滚动我想改变我的UITextView的帧高度,以便用户可以读取所有数据。

所以这里是我的代码片段,

-(void)viewDidLoad{

    [super viewDidLoad];
    _txtView.delegate = self;
    previousheight = _txtView.contentSize.height;
    NSLog(@"%.2f",previousheight);
}

这里我得到了日志值 - > 22。

-(void)textViewDidChange:(UITextView *)textView{

    NSLog(@"%.2f",textView.contentSize.height);
}

这里我得到了日志值 - > 36。

=============================================== ================================

现在另一种方式,如果我禁用UITextView的滚动,那么我得到完美/预期的结果。唯一的问题是我之后无法启用滚动。

-(void)viewDidLoad{

    [super viewDidLoad];
    _txtView.scrollEnabled = FALSE;
    previousheight = _txtView.contentSize.height;
    NSLog(@"%.2f",previousheight);
}

这里我得到了日志值 - > 30。

-(void)textViewDidChange:(UITextView *)textView{

    NSLog(@"%.2f",textView.contentSize.height);
    txtView.scrollEnabled = TRUE;
}

这里我得到了日志值 - > 30。

但是现在没有滚动,虽然我启用了滚动视图。

任何帮助将不胜感激。 谢谢

1 个答案:

答案 0 :(得分:0)

我昨天将此报告为iOS 7.0上的一个错误。

我可以使用'boundingRectWithSize:...'正确计算文本高度,但如果禁用滚动,则无论高度如何,文本都会被切断。

有时有效的解决方案是:

textView.scrollEnabled = TRUE;
textView.text = @"Lorem ipsum...";
textView.scrollEnabled = FALSE;