滚动视图中的iOS textview自动大小(没有textview' s滚动条)

时间:2013-12-04 11:07:58

标签: ios scroll textview size scrollview

我有一个带有滚动视图,标题,副标题,图像和描述的视图。 像这样:

storyboard view controller elements

我将在descriptionTextview中显示从我的服务器下载的一些文本(可能是几行或多行)。我将滚动所有视图,而不仅仅是texview,因为视图的大部分都忙于其他元素。 像这样:

storyboard view controller

我取消选中textView中的“scrolling enable”,并在View Controller属性检查器中将size属性更改为“Freeform”。 由于我将textView添加到我的viewController,因此scrollView不会滚动。 如何在滚动视图中显示textview的所有文本?

我尝试在viewDidLoad中添加这些行,以便以编程方式更改textview和scrollview的大小,但它不起作用。

[self.scrollView setScrollEnabled:YES];

CGRect frame = self.descriptionTextView.frame;
frame.size.height = self.descriptionTextView.contentSize.height;
self.descriptionTextView.frame = frame;

[self.scrollView setContentSize:(CGSizeMake(320,480+self.descriptionTextView.frame.size.height))];
NSLog(@"tv height %f", self.descriptionTextView.frame.size.height);

提前谢谢。

编辑

  • 此viewController有一个NavigationController。
  • 以前的ViewController是TabBarViewController中的一项。此标签包含CustomCell。
  • 点击单元格,它会使用scrollView(Web详细信息视图控制器)显示此视图。

由于

3 个答案:

答案 0 :(得分:1)

您需要将scrollview内容化方法移至viewdidappear而不是viewdidload

答案 1 :(得分:1)

我不知道原因,但导航控制器animation:YES [self.navigationController pushViewController:myNextViewController animated:的属性];是问题!!!!!

我删除了storyboard的segue,我写了[self.navigationController pushViewController:myNextViewController animated:NO];,现在它正在工作!!!

如果有人可以给我一个解释,那就太好了。 感谢

编辑:需要textview身高> scrollview height,在storyboard中设置10000:

static height of textView

编辑2:问题仍然存在!我打电话给self.myTextView.text = @"someStringText",我可以看到所有文字,但视图滚动很长:像10.000!所以这个方法没有以编程方式设置高度:(未经检查的正确答案。任何人都可以回答这个问题吗?

谢谢

编辑3:解决方案最后,我想我得到了解决方案:在-(void)viewDidAppear:(BOOL)animated;我用self.descriptionTextView.text = content.text; //long long text以编程方式设置文本,然后我调用[self textViewDidChange:self.descriptionTextView];

- (void)textViewDidChange:(UITextView *)textView
{
    CGFloat fixedWidth = textView.frame.size.width;
    CGSize newSize = [textView sizeThatFits:CGSizeMake(fixedWidth, MAXFLOAT)];
    CGRect newFrame = textView.frame;
    newFrame.size = CGSizeMake(fmaxf(newSize.width, fixedWidth), newSize.height);
    textView.frame = newFrame;
    //VERY IMPORTANT: without this, user can scroll scrollView and textview!
    [textView setUserInteractionEnabled:NO];
}

在故事板中,未选中复选框use Autolayout

答案 2 :(得分:0)

您是否有使用文字视图而非标签的特殊原因?由于文本视图是滚动视图,并且在滚动视图内部具有滚动视图是有问题的,您是否可以通过使用UILabel并将行数设置为0来轻松解决问题,以使其增长以适合您的内容?

(抱歉,我没有足够高的代表将此添加为评论。)