2012-01-20 2 views
1

UITextField이 포함 된 UITableViewCell 사용자 지정 UITableViewController이 있습니다. 표보기를 편집 모드로 전환 할 때 표의 맨 아래에 새 셀을 추가하고이 셀을 becomeFirstResponder으로 만들고 싶습니다. 바닥이 셀 내 tableView:cellForRowAtIndexPath: 방법 점검 그래서 단지 광고가 추가편집 할 때 UITextField를 사용하여 사용자 지정 UITableViewCell을 만드는 중입니다.

[cell.theTextField becomeFirstResponder];

나는 잘 작동한다고 믿었습니다. 그러나 테이블보기가 처음 표시 될 때 작동하지 않는 것 같습니다. 그러나 셀을 선택하면 (처음 응답자가 됨) 편집 모드가 해제되어 (코드 내에서 resignFirstResponder이 발생 함) 편집 모드로 돌아갈 수 있으며 마술처럼 예상대로 첫 번째 응답자가 될 수 있습니다! 내가 선택한 다른 셀 (그들은 모든 텍스트 필드가)로 모드를 편집하고 다시 다음, 편집 모드에서 이동과 끝하더라도, 그것은 여전히 ​​작동

주, 몇 가지 점 I에서 한로 마지막 셀을 becomeFirstResponder (선택 함)으로 만들었습니다.

제 생각에는 처음 응답자가되면 테이블 뷰나 원래 설정되지 않은 다른 곳에서 설정되는 것이 있습니다. 그리고 나서이 작업이 이루어집니다.

여기에 어떤 일이 벌어지고 있는지에 대한 의견이 있으십니까?

답변

1

첫 번째 becomeFirstResponder 셀에 아직 수퍼 뷰가 없으므로 호출이 실패합니다. tableView:cellForRowAtIndexPath:에서 테이블 뷰를 반환하면 셀이 하위 뷰로 추가됩니다. 이 전화를 다른 곳으로 보내 주시기 바랍니다. 맞춤 UITableViewCell 하위 클래스가 이미있는 경우 didMoveToWindow:을 구현하고 [self becomeFirstResponder]을 호출 할 수 있습니다.

+0

제안 해 주셔서 감사합니다.하지만 몇 가지가 있습니다. 1) 어떻게 그 하나의 셀 (그리고 그들 모두는 아님)에 대해서만 이것을 선택하겠습니까? 2) 저는 이것을 사용자 정의 셀 클래스에 추가하려고 시도했지만 아무 것도하지 않았습니다. 나는 또한 이것을 tableView에 두려고 시도했다 : willDisplayCell : forRowAtIndexPath : 그 셀만 'if'를 할 수있는 곳, 그리고 여전히 작동하지 않았다. – DataJock

+0

흠, 힘들어요. 편집 모드로 들어가는 동안 셀을 어떻게 추가합니까? 다른 모든 것이 실패하면, 지연된 후에'becomeFirstResponder'를 수행 할 수 있습니다. 그러나 그것은 추악하고, 허약하며 최후의 수단으로 만 이루어져야합니다. – Costique

+0

다음은 관련 부분입니다. [self.tableView beginUpdates]; if (editing) {[self.tableView insertRowsAtIndexPaths : [NSArray arrayWithObject : indexPathForNewLabel] withRowAnimation : UITableViewRowAnimationAutomatic]; } [self.tableView endUpdates]; – DataJock