맞춤 헤더가있는 UITableView가 있습니다. 즉, 직접 UIView를 만듭니다. 보기의 하위 뷰 중 하나의 접근 가능성 프레임을 조정해야하지만 프레임의 좌표를 적절하게 설정하는 방법을 알 수는 없습니다. 즉, 창에 상대적이어야하지만 성취 방법을 모르겠습니다. 그. 내가 VoiceOver를의 목적을 위해 하나에 결합하려는 두 개의 UILabels를 가지고 부모보기가 이동할 요소의 액세스 가능성 프레임 설정
- (UIView *)tableView:(UITableView *)tableView
viewForHeaderInSection:(NSInteger) section
{
CGRect bounds = CGRectMake(0, 0, [tableView frame].size.width, 48);
UIView *header = [[UIView alloc] initWithFrame:bounds];
UILabel *labelOne = [[UILabel alloc] initWithFrame:
CGRectMake(0, 0, bounds.size.width - 80, 18)];
UILabel *labelTwo = [[UILabel alloc] initWithFrame:
CGRectMake(0, 20, bounds.size.width - 80, 18)];
CGRect frameOne = [labelOne frame];
CGRect frameTwo = [labelTwo frame];
[labelTwo setIsAccessibilityElement:NO];
[labelOne setAccessibilityFrame:CGRectUnion(frameOne, frameTwo)];
// ...
return header;
}
처럼
내 코드 보인다. 나는 두 번째 레이블을 무시하고 두 번째 레이블의 영역을 덮기 위해 첫 번째 레이블의 프레임을 확장하여이 작업을 수행합니다. (두 번째 레이블은 첫 번째 레이블 바로 아래에 있습니다.) 문제는 프레임을 가져 오는 것입니다. 위와 같이 코드를 사용하면 접근성 프레임이 올바른 크기가되지만 UITableView의 머리글이 화면의 왼쪽 상단에있는 것처럼 배치됩니다. 코드를 수정하려고 시도했습니다.
CGRect frameOne = [header convertRect:[labelOne frame] toView:nil];
CGRect frameTwo = [header convertRect:[labelTwo frame] toView:nil];
동일한 문제가 발생했습니다. 이 후자의 코드가 UILabels의 프레임을 윈도우 상대 좌표로 변환하면 안됩니까?
UIView가 만들어 질 때 UI 위치가 화면에 표시 될 위치를 알지 못하고 UITableView의 일부로 스크롤 될 수 있습니다. accessibilityFrame을 호출 할 때마다 UIView의 위치를 확인하는 메시지로 구현해야합니까?