문제

그룹화되어 있어요 UITableViewController 하나의 섹션과 많은 행이 있습니다.각 cell 두 가지 요소로 구성됩니다.ㅏ UILabel 설명과 UITextField 입력을 위해.형태라고 말하고 싶습니다.

하단에는 다음 보기로 이동하는 "다음" 버튼이 있습니다.하지만 그 전에, 나는 UITextField'에스:사용자가 필드를 채우지 않은 경우 이 필드에 초점이 맞춰져 사용자가 무언가를 입력해야 한다는 것을 알 수 있습니다.나는 이것을 시도했다 :

[inputField becomeFirstResponder];

기억해, 내가 누른 버튼은 바닥에 내 견해에 대해 상상해보십시오. UITextField ~이다 상단에.이런 상황에서는 필드가 너무 멀리 떨어져 있기 때문에 초점이 맞지 않습니다.이제 천천히 위로 스크롤하여 필드가 표시되면 필드가 첫 번째 응답자가 되어 커서를 얻습니다. :-) 결론:그만큼 becomeFirstResponder 작동했지만 정확히 내가 원하는 작업을 수행하지는 않았습니다.손가락으로 위로 스크롤하고 싶지 않습니다. 필드에 초점이 맞춰지고 자동으로 표시되어야 합니다.

내 분야로 직접 "점프"할 수 있는 방법이 있나요?대안을 사용하십시오 becomeFirstResponder?내 필드로 자동으로 스크롤하시겠습니까?

당신의 도움을 주셔서 감사합니다!

도움이 되었습니까?

해결책

편집하려는 UITextField가 있는 셀의 인덱스를 알고 있는 경우 다음을 사용하세요.



NSIndexPath* indexPath = [[NSIndexPath indexPathWithIndex:your_section_index] indexPathByAddingIndex:your_cell_index];
[tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES]

전화하기 전에 becomeFirstResponder.

셀이 화면 밖에 있으면 일부 iOS 버전에서는 makeFirstResponder가 실패할 수 있습니다.또한 일부 버전에서는 특정 상황에서 테이블뷰에 추가 스크롤을 수행합니다(예:Apple의 코드에서 응답자가 더 이상 스크롤하지 않고도 화면 밖에 있을 것이라고 판단한 경우)이러한 문제를 해결하려면 스크롤 애니메이션이 완료된 후 최초 대응자가 되도록 호출해야 할 수도 있습니다.

다른 팁

나는 같은 문제를 가지고 있습니다. 이는 두 작업에 대해 동시에 발생하는 UIAnimation 때문입니다..따라서 scrollToRowAtIndexPath에 대한 UIAnimation은 makeFirstResponder를 무시합니다.

해결책은 다음과 같습니다. 애니메이션 효과 중 하나를 비활성화합니다. 또는 그렇지 않으면 performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:1.0f];.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top