2011-11-21 2 views
2

나는 10 행의 UITableView을 가지고 있습니다. 각 셀에는 UITextField이 있습니다.키보드 팝업 때 UITableView 애니메이션 방법?

문제는 하단의 셀에 UITextField을 클릭하면 키보드가 팝업되고 셀이 차단된다는 것입니다. 이 문제를 어떻게 처리 할 수 ​​있습니까? 테이블 뷰를 애니메이션화해야합니까?

업데이트 코드 :

- (void)textFieldDidBeginEditing:(UITextField *)textField{ 
    self.vitalsTableView.contentInset=UIEdgeInsetsMake(0,0,200,0); 
    NSIndexPath *path = [self.vitalsTableView indexPathForSelectedRow]; 
    [self.vitalsTableView scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionTop animated:YES]; 
} 

답변

2

확인 Apple's documentation을 키보드 notifications 위해.

나는 누군가가 아이폰 OS 7에서이 같은 문제로 실행되는 경우에서, example code.

+0

keyboardWillHide 메소드에서이 라인을 완료하지 못했습니다 :'CGRect newTableViewFrame ='. 또한 self.selectedCell에 대해 뭘해야합니까? –

+0

나는 필요에 맞게 코드를 약간 바꿨다. 이제 textField를 저장합니다. BTW : stackoverflow 오류 코드를 무료로 기대하지 마십시오. Webformulas에는 즉시 구문 검사 기능이있는 컴파일러가 없습니다. – vikingosegundo

+0

감사합니다. '[self scrollToRectOfTextField];'는 구문 에러를 내고 있습니다. 내 수업은 UIViewController입니다. –

5

사용

jQuery과

- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated 방법 예 :

[tableView scrollToRowAtIndexPath:cellIndexPath atScrollPosition:UITableViewScrollPositionTop animated:YES]; 

가 표시 셀을 유지 오프셋 최하부 수에있는 tableView를 스크롤됩니다. 셀의 셀이 충분하지 않은 경우 테이블의 contentInset을 설정하여 스크롤 오프셋을 허용 할 수 있습니다.

어쩌면 UITextField 대리인이 테이블 뷰 컨트롤러입니다. 당신은 바닥 셀의 경우 - (void)textFieldDidBeginEditing:(UITextField *)textField

에 전화를 걸 수 있습니다 :

- (void)textFieldDidBeginEditing:(UITextField *)textField{ 
    tableView.contentInset=UIEdgeInsetsMake(0,0,200,0); 
    [tableView scrollToRowAtIndexPath:cellIndexPath atScrollPosition:UITableViewScrollPositionTop animated:YES]; 
} 

- (void)textFieldDidBeginEditing:(UITextField *)textField{ 
    tableView.contentInset=UIEdgeInsetsMake(0,0,0,0); 
} 
+0

감사합니다. 내 시나리오에서 구현 방법에 대한 예제를 제공 할 수 있습니까? –

+0

예제를 편집하려면 – javieralog

+0

내가 그랬어 그리고 아무 것도 내가 아래쪽 셀 중 하나에서 UITextField를 클릭하면 어떻게됩니까. 키보드로 계속 덮여 있습니다. –

1

을 발표 : 나는 viewWillAppear: 내 자신에 viewWillAppear:의 슈퍼 클래스의 구현을 호출하는 것을 잊었다 때문에이 문제가 단순히 나에게 무슨 일이 일어나고 있음을 발견 이행. 한 줄로 문제가 해결되었습니다.

-(void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    // Do whatever you need to 
} 
+0

정말 고마워요! –