2016-04-19 162 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。 –