2009-12-03 3 views
0

테이블 뷰의 맨 아래 테이블 셀에 UITextView를 구현하려고합니다.뷰 프레임 및 원점을 편집 한 후 UITableView가 스크롤되지 않습니다.

나는이 제안을 Making a UITableView scroll when text field is selected 및 다른 솔루션에도 사용해 보았지만, 키보드의 공간을 만들기 위해 인위적으로 추가 높이를 현재보기에 추가해야하기 때문에 약간 다릅니다.

내 솔루션으로 이전하기 위해 이전 솔루션에 추가 한 내용은 다음과 같습니다. 제대로 셀에보기에 높이를 추가하고 스크롤 이렇게

-(void) keyboardWillShow:(NSNotification *)note { 
     CGRect frame = self.view.frame; 
     frame.size.height += keyboardHeight; 
     frame.origin.y -= keyboardHeight; 
     self.view.frame = frame; 
} 

-(void) keyboardWillHide:(NSNotification *)note 
{ 
     CGRect frame = self.view.frame; 
     frame.size.height -= keyboardHeight; 
    frame.origin.y += keyboardHeight; 

} 

하지만 현재 보이는 뷰 경계의 외부 유효한 내용이있을 경우에도 불가능하게 넘어 스크롤, 원래 뷰의 높이를 복원 한 후 (스크롤 막대가 튀어 나오기 전에 텍스트보기가 보입니다.)
keyboardWillShow에서 tableview의 프레임 또는 경계 (보기가 아님)를 저장하고 keyboardWillHide에서 복원하려고하면 스크롤이 복원되지만보기가 반으로 절단됩니다.

보기 하단에 높이를 하드 코딩하는 것 외에 다른 방법이 있습니까?

답변

3

뷰의 원점을 편집하는 코드를 제거하여 잠겨있는 스크롤 문제를 해결할 수있었습니다. 또한, 내 계산에서 tableview의 contentSize 속성을 사용하여 맨 아래 셀로 스크롤을 구현했습니다.

-(void) keyboardWillShow:(NSNotification *)note 
{ 

    if(!isKeyboardShowing) 
    { 
    isKeyboardShowing = YES; 
    CGRect keyboardBounds; 
    [[note.userInfo valueForKey:UIKeyboardBoundsUserInfoKey] getValue: &keyboardBounds]; 
    CGFloat keyboardHeight = keyboardBounds.size.height; 

      CGRect frame = self.view.frame; 
      frame.size.height += keyboardHeight; 
      self.view.frame = frame; 

    CGPoint scrollPoint = frame.origin; 
    scrollPoint.y += _tableView.contentSize.height - keyboardHeight; 
    [_tableView setContentOffset:scrollPoint animated:YES]; 
    } 
} 
관련 문제