2013-10-09 1 views
1

줄 수가 늘어남에 따라 높이를 조정하려는 UITextView이 있습니다. 이 양식 외에도 UITextView이 들어있는 UIView의 크기를 조정해야합니다. 나는이에 대해 다음 코드를 사용하고 있습니다 :UITextView contentSize가 자동으로 감소합니다.

- (무효) textViewDidChange을 : (UITextView *) 텍스트 뷰 {

CGFloat before = textView.frame.size.height; 

CGRect frame = textView.frame; 

frame.size = textView.contentSize; 

CGFloat after = frame.size.height, diff = after - before, final = 0; 

if (diff>16) { 
    final = 8; 
}else if(diff<-1){ 
    final = -16; 
}else{ 
    final = 0; 
} 

[self.containerView setFrame: CGRectMake(self.containerView.frame.origin.x, 

self.containerView.frame.origin.y - 최종 self.containerView을. frame.size.width, frame.size.height + 13)];

[textView setFrame: frame]; 

}

또한 텍스트가 변경 될 때 컨테이너의 Y 위치를 변경하려합니다. 나는 글꼴 크기에 따라 정적 숫자 값을 사용하여 합병증을 피합니다.

은 그러나 문제가 UITextView가 새 줄을 입력 할 때마다, 그것은 크기를 조절한다는 것입니다 그것의 원래 크기 그래서 UITextView의 프레임도 정말 추한 보이는 순간을 위해 감소에 contentSize. 또한 Y 위치는이 contentSize 변경에 따라 달라지며이 자동 크기 조정이 발생하면 모두 엉망이됩니다.

whatsapp 또는 viber와 같은 응용 프로그램이 가지고있는 동일한 동작을 찾고 있습니다. 어떻게 내가 이걸 이룰 수 있을지 아는가?

답변

0

올바르게 이해하면 containerView에 텍스트 필드가 포함되어 있으므로 텍스트 필드의 크기에 관계없이 containerView에 그려야합니다. 그렇다면이 같은 것을 시도하십시오

-(void) textViewDidChange:(UITextView *)textView 

{ 

CGRect frame = textView.frame; 

frame.size = textView.contentSize; 

//do your magic calculations 

[textView setFrame: frame]; 

[self.containerView setFrame: CGRectMake(self.containerView.frame.origin.x, 
self.containerView.frame.origin.y-final, self.containerView.frame.size.width, frame.size.origin.y +frame.size.height+13)]; 

} 
+0

그런 방법이없는 것 같습니다. –

관련 문제