2011-11-09 4 views
0

나는 UITableViewCellUITableView을 가지고 있습니다. 각 셀에는 UITextfield이 있습니다. textFields를 누르면 키보드가 표시됩니다. 불행히도 키보드는 iPhone의 화면에서 더 낮은 셀 일부를 덮고 있습니다.UITableView를 조정하여 UIKeyboard를 숨기는 가장 쉬운 방법

키보드를 표시 할 때 tableView를 스크롤하는 가장 쉬운 방법은 무엇입니까?

나는 contentOffset으로 실험했습니다. 이 실제로 tableView 스크롤하는 데 사용됩니다. 그러나 어떤 셀이 "활성"(현재 firstResponder 인 textField가 있는지) 여부를 결정하는 데 문제가 있습니다. 내 응용 프로그램은 세로 및 가로 방향을 모두 지원하므로 장치가 회전 할 때 tableView를 스크롤해야 할 때가 있습니다. 대한 textFieldShouldBeginEditing:

NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:[textField convertPoint:textField.frame.origin toView:self.tableView]]; 

:

+0

cellForRowAtIndexPath 메서드를 사용하여 필요한 셀을 식별하고 텍스트 필드에서 애니메이트 할 수있는 셀을 식별 할 수 없습니까? – Mellson

답변

2

에 textField가 cellForRowAtIndexPath:

에 또 다른 방법을 indexPath의 행의 tag 속성을 설정하는 활성 현재 인을 추적하는 간단한 방법은이 줄을 사용하는 것입니다 textField가 활성화되거나 기기 회전시 회전 콜백에 따라 scrollToRowAtIndexPath:atScrollPosition:animated:

1

비슷한 문제. 첫 번째 응답자 또는 활성 UITextField를 추적하는 방식은 콜백을 사용하는 것입니다. UIControlEvent UIControlEventEditingDidBegin을 사용하는 메소드를 호출합니다.

[self.nameUnitNumberField addTarget:self.textFieldDelegate action:@selector(handleEditingDidBegin:) forControlEvents:UIControlEventEditingDidBegin]; 

그런 다음 대리자 클래스에서, 나는 현재 텍스트 필드를 설정 : I 설정의 UITextField

- (void)handleEditingDidBegin:(id)sender 
{ 
    self.currentNameField = (UITextField *)sender; 
} 

이 잘 작동하는 것 같군. 또한 태그 사용을 피합니다. 나는 거기에 잠재적 인 문제가 있다고 들었는데, 필요하지 않을 때 그것을 피하는 것이 가장 좋습니다. 여기에 설명 된대로 : Get UITableView to scroll to the selected UITextField and Avoid Being Hidden by Keyboard

또는 키보드가 화면에있는 동안 단지 테이블 뷰의 크기를 조정

활성의 UITextField가 있으면, 당신은 contentInset 및 scrollToRowAtIndex를 사용할 수 있습니다. 그렇게하는 것이 가장 간단한 방법 일 것입니다.

관련 문제