2012-08-22 5 views
0

10 개의 섹션이있는 그룹 테이블보기가 있으며 각 섹션에는 하나의 셀이 있으며 각 셀에는 텍스트 필드가 있습니다.여러 텍스트 필드가있는 그룹 테이블보기

사용자가 텍스트 필드를 탭하면 해당 부모 셀을 맨 아래로 스크롤하여 키보드 바로 위를 스크롤합니다.

모든 텍스트 필드에는 "다음"반환 키가 있으므로 사용자가이 필드를 누르면 다음 텍스트 필드 (아래 셀에 있음)가 첫 번째 응답자 여야합니다.

문제는 다음과 같습니다.
사용자가 인덱스 5의 텍스트 필드를 탭하면 키보드 팝업이 나타나고 테이블보기가 스크롤되어이 셀이 키보드 바로 위에 오게됩니다.
이제 사용자는 다음 버튼을 누릅니다.
인덱스 6에있는 셀의 텍스트 필드가 첫 번째 응답자가되게하고 싶습니다.
하지만이 텍스트 필드를 얻으려면 어떻게해야합니까 ??
나는 당신이 당신의 행을 만드는 방법을 모르는

답변

1

두 솔루션은 마음에 와서 :

1) 당신이 많은 세포를 가지고 있지 않기 때문에 다음, 당신은 쉽게 얻을 수있는 곳을 시작 및 배열에 넣어 때를 만들고,이를 재활용하지 않습니다 tablview에서 셀을 요청하면 배열에서 셀을 빼냅니다.

다음에 가고 싶을 때 동시에 테이블 뷰에 그러한 위치 나 셀로 스크롤하도록 알리고 배열에서 셀을 꺼내 화면에서 일부 오프 스크린 프레임과 함께 추가하면 뷰에 추가 할 수 없습니다. 텍스트 필드를 첫 번째 응답자 (키보드를 계속 유지)로 만듭니다. tableView에서 셀을 요청하면 프레임을 다시 설정하거나 프레임을 재설정하고 뷰에서 프레임을 제거해야합니다. 이렇게해야 할 필요가 있으면 즉시 다시 첫 번째 응답자로 만들 필요가 있습니다 (메인 대기열에 블록을 보내 텍스트 필드가 첫 번째 응답자를 결코 사퇴하지 못하도록 할 수도 있음).

2) 마찬가지로, 셀의 text 첫 번째 응답자를 표시하고 보이는 셀에 포함 된 다음 스크롤하여 첫 번째 응답자로 만들 수 있습니다. 해당 셀이 visibleCells가 아닌 경우 셀을 만들고 위와 같이 뷰에 추가 한 다음 위의 첫 번째 응답자를 수행하고 해당 셀의 인덱스를 묻는 메시지가 표시되면 해당 셀을 제공하여 프레임을 재설정 할 수 있습니다.

저는 키보드로 트릭을하기 위해 오프 스크린 텍스트 필드를 사용했습니다. 키보드를 사용하여 게임을 계속하기 위해서입니다. 덜 확실한 것은 textField가 뷰에 있는지 아닌지에 대한 트릭입니다.

이렇게하면 제 3의 방법을 생각하게됩니다. UITextField를 화면에 오프 스크린으로 놓습니다.전환 할 때 셀이 아직 보이지 않는 경우 (즉, 생성 된 경우), 화면 외부 textField에 firstReponder로 알린 다음 tableView 스크롤을 추적하고 textField가 끝나면 첫 번째 응답자를 볼 수있게됩니다. 그래서 키보드를 계속 올려 놓으면 firstResponder를 전송 (즉 설정) 할 수 있습니다.

1

셀이 보이지 않는 때문에이 전무를 얻을 수 있습니다 cellForRowAtIndexPath로 셀을 .. 얻으려고하지만 당신은 jQuery과 셀을 재활용 것을 고려해야합니다. 즉, 텍스트 필드는 이론적으로 이전과 동일 할 수 있으며 내용 만 변경 될 수 있습니다.

당신이해야 할 일은 키보드 바로 위에있는 텍스트 필드를 확인하는 것입니다. 보기가 들어가고 실제로 변경되지 않을 때 이것이 생성되면 나는 놀라지 않을 것입니다.

다시 표를 사용하면 표가 제공되는대로 행의 해당 데이터 만 채우는 셀과 해당 콘텐츠 소유자 만 재활용됩니다.

세포를 만들고 재활용하는 코드를 게시하면 더욱 구체적 일 수 있습니다.

관련 문제