2015-01-09 3 views
1

UITextView가 (정적 인) UITableviewCell에 있습니다. textView가 비어 있습니다. 내가 원하는 건 textView 동적으로 크기를 조정하는 것입니다. 사용자가 텍스트를 입력 할 때 textView의 내용을 크기로 지정해야합니다.내용에 맞게 UITextVIew 및 UITableViewCell 크기 조정

다음으로 셀의 크기를 textview의 내용에 맞게 동적으로 조정하고 싶습니다.

textView shouldChangeTextInRange에서 textViewFitToContent를 호출했습니다.

내 문제는 효과가 없습니다. 내가 textViewFitToContent (uitableview없이) 다른 프로젝트에서 사용하여 시도하고 예상대로 작동했습니다.

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 
{ 
    if (textView == myTextView) 
    { 
     if ([text isEqualToString:@"\n"]) 
     { 
      [self insertXEveryNewLine:range :textView :@"\n\u2022 "]; 
      return NO; 
     } 
    } 
    return YES; 
} 

- (BOOL)insertXEveryNewLine:(NSRange)place :(UITextView *)View :(NSString *)something 
{ 
    NSRange cursor = NSMakeRange(place.location + 3, 0); 
    NSMutableString *mutableT = [NSMutableString stringWithString:View.text]; 
    [mutableT insertString:something atIndex:place.location]; 
    [View setText:mutableT]; 
    [View setSelectedRange:cursor]; 
    [self textViewFitToContent:View]; 
    return NO; 
} 

- (void)textViewFitToContent:(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; 
    textView.scrollEnabled = NO; 
} 

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 

{ 
    UIFont *font = [UIFont systemFontOfSize:14.0f]; 
    NSString *text = txtSymtoms.text; 
    CGFloat height = [text boundingRectWithSize:CGSizeMake(self.tableView.frame.size.width, 100) options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading) attributes:@{NSFontAttributeName: font} context:nil].size.height; 
    return height + 5; 
} 

저는 너무 가혹한 사람이 아닙니다.

고맙습니다

업데이트 내가 자동 레이아웃을 가지고 있고, 나는 새로운 라인을 추가 할 때, 아무 일도 발생하지 않기 때문에 나는 heightForRowAtIndexPath을 삭제

?

+0

정적 셀 테스트에는 데이터 소스가 필요합니다 (확실하지 않음). 동적 셀 크기를 동적으로 변경하려면 동적 프로토 타입을 사용해야합니다. – Jing

답변

-1

UITableView의 셀 높이를 계산해야합니다. UitextViews 높이를 기반으로해야합니다.

+0

내가 잘못하고있는 것을 나에게 보여줄 수 있습니까? 어떻게 해결할 수 있습니까?/ –

+0

제약이 필요하기 때문에 약간의 문제가 있습니다. 셀의 맨 아래에 텍스트 뷰가있어 무언가 잘못되었으므로 그걸 도와 줄 수 있습니까? –

+0

자동 레이아웃을 사용하고 있습니까? 그렇다면 왜 수동으로 heightForRowAtIndexPath에서 셀 높이를 계산하고 있습니까? – Tander

관련 문제