2016-04-19 165 views
0

我有自定义UITextviewCell里面的UITextView。我希望单元格根据UITextview的内容进行增大。我已将textview的顶部,底部,右侧,左侧固定到单元格的内容视图。当我用文本预先填充textview时,它按预期正常工作。当我用键盘输入文字时它不起作用。我的自定义单元格内。自定义UITextview里面自定义UITableviewcell

UITextView * textView = [[UITextView alloc]init]; 
[textView setTranslatesAutoresizingMaskIntoConstraints:NO]; 
[textView setBackgroundColor:[UIColor redColor]]; 
[textView setScrollEnabled:NO]; 
[textView setDelegate:self]; 
[self.contentView addSubview:textView]; 

NSLayoutConstraint *xConstrain = [NSLayoutConstraint constraintWithItem:textView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeLeft multiplier:1.0 constant:0]; 
NSLayoutConstraint *yConstrain = [NSLayoutConstraint constraintWithItem:textView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeTop multiplier:1.0 constant:0]; 
NSLayoutConstraint *rightConstrain = [NSLayoutConstraint constraintWithItem:textView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeRight multiplier:1.0 constant:0]; 
NSLayoutConstraint *bottomConstrain = [NSLayoutConstraint constraintWithItem:textView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0]; 

[self.contentView addConstraint:xConstrain]; 
[self.contentView addConstraint:yConstrain]; 
[self.contentView addConstraint:rightConstrain]; 
[self.contentView addConstraint:bottomConstrain]; 

在我的tableview控制器加入以下行

-(void)viewdidload 
{ 
    self.tableView.rowHeight = UITableViewAutomaticDimension; 
    self.tableView.estimatedRowHeight = 100.0f ; 
} 
+0

如果工作正常,您的问题是什么? – fsb

+0

它只在我做settext时才起作用:用textView,但当我用键盘输入文本时不工作。 –

回答

0

有一对夫妇的事情,你可以在这里做,一个出现在脑海:

•当您输入文本时,跟踪UITextView的高度,如保持“旧高度”变量和“新高度”变量。要获得“新高度”,可以使用UITextViewsizeThatFits方法,将高度设置为例如1000(足够大以至于不会限制结果)。

•当新高度与旧高度不同时(或者更小或更大),重新加载包含您正在处理的UITextView的单元格。你可以设置事件[cell setNeedsLayout],然后[cell layoutIfNeeded]以确保它调整大小。

我想这应该工作,请让我知道,如果它不。

+0

你是否建议使用sizeThatFits:方法? –

+0

是的,这样做,我会更新我的答案。 – trdavidson

+0

但我想用contrains来实现这一点。我不喜欢使用setFrame。 –