2013-01-02 3 views
0

사용자 지정 UITextView (CodeTextView)있는 UIViewController 있고 사용자 지정 UITableView (LinesTableView)이 텍스트보기 왼쪽. LinesTableView에는 CodeTextView에 정렬 된 줄 번호가 들어 있습니다.사용자 지정 UITextView 입력 할 때 크기 조정

나는 CodeTextView 편집을 시작하고 키보드가 나타날 때, 나는 두보기의 크기를 편집 할 경우 : CodeTextView을 편집 할 때

- (void)keyboardAppears:(NSNotification *)notification 
{ 
    [_codeTextView setFrame:CGRectMake(30, 0, 290, self.view.frame.size.height - 216.0f)]; 
    [_linesTableView setFrame:CGRectMake(0, 0, 30, self.view.frame.size.height - 216.0f)]; 
} 

을 내가 버튼을 누를 때, 나는 LinesTableView 업데이트 :

- (void)updateLines 
{ 
    NSString *plainText = self.text; 
    NSArray *components = [plainText componentsSeparatedByString:@"\n"]; 
    int lines = components.count; 
    if([[components lastObject] isEqualToString:@""]) lines--; 
    _linesTableView.lines = lines; 
    [_linesTableView reloadData]; 
} 

그러나 키보드가 표시되고 Enter 키를 누르면 CodeTextView의 원래 높이가 조정됩니다! [_linesTableView reloadData]를 주석 처리하면 모든 것이 잘 작동합니다. 그래서 어떻게 든 LinesTableView와 CodeTextView는 LinesTableView를 다시로드 할 때 원래 높이를 되 찾는다.

이 문제를 해결하는 방법을 모르겠습니다. 나는 그것이 어렵지 않다고 생각하지만 나는 이것을 할 수있는 방법을 생각해 낼 수 없다. 아무도 이것으로 나를 도울 수 없습니까?

미리 감사드립니다. :)

답변

0

신속하고 더러운 방법은 UIView에서 크기를 조정할 수 있도록 내용을 클립 할 수 있도록 실제 테이블의 크기를 조정하는 두 UIView에 넣는 것입니다. 그렇게하면 데이터가 다시로드 될 때 뷰가 다시 비례하더라도 클리핑 된 상태로 유지됩니다. 내 머리 속에는 UIScrollView를 사용하고 두 개의 비 스크롤링 구성 요소를 배치하는 것이 좋습니다. 그렇게하면 키보드로 가득 찬 장소가 그만큼의 경험을 망치지 않습니다.

+0

두 뷰를 모두 UIView에 넣었습니다.하지만이 뷰의 크기를 조정하면 두 뷰가 같은 크기로 유지됩니다. 내가 'subviews autoresize'및 '클립 subviews'상자를 확인했습니다. 프로그래밍 방식으로 높이를 조정해도 작동하지 않습니다. 왜 그런지 알고 있니? – Devos50

관련 문제