UIAccessibilityContainer 비공식적 인 프로토콜을 따르는 UIControl 하위 클래스가 있습니다. -isAccessibilityElement에 NO를 반환하고 올바른 -accessibilityElementCount 및 요소를 접근 자에 전달합니다.UIAccessoryElement, accessoryFrame 및 화면 회전이 깨졌습니다.
접근성 영역을 나타 내기 위해 만들어진 각 UIAccessibilityElement가 성공적으로 만들어지고 프레임은 드로잉하는 다른 CGRect의 1 : 1 매핑입니다.
예를 들어 {94, 99}, {209, 350}}에 드로잉 할 것이고 UIAccessibilityElement의 -accessibilityFrame은 동일한 CGRect 값으로 설정됩니다.
그러나 가로 방향 또는 거꾸로 세로 방향 일 경우 프레임 (접근성 요소에만 해당, 그리기는 여전히 잘 작동 함)이 잘못 회전됩니다. 프레임을 기준으로 한 왼쪽 상단 점은 항상 홈 버튼의 상단 왼쪽 모서리입니다. 당신이 볼 수 있듯이이 가로 모드에있어,
, 프레임은 지정 무엇을 완전히 믿을 수 없을되지 않습니다 :
다음은 시뮬레이터 스크린 샷입니다. 회전이 파열되는 것처럼 나에게 보이는
CGRect localRect = someCGRectVariable;
CGRect globalRect = CGRectOffset(localRect, CGRectGetMinX(self.accessibilityFrame), CGRectGetMinY(self.accessibilityFrame));
UIAccessibilityElement *accElem = [[UIAccessibilityElement alloc]initWithAccessibilityContainer:self];
accElem.isAccessibilityElement = YES;
accElem.accessibilityFrame = globalRect;
accElem.accessibilityHint = [NSString stringWithFormat:NSLocalizedString(@"xyz %@", nil), someName];
accElem.accessibilityTraits = UIAccessibilityTraitButton;
accElem.accessibilityLabel = nameValue;
,하지만 난 그것에 내 손가락을 넣어 수 없습니다
다음은 요소의 생성을 구동하는 코드입니다. 세로 모드에서 완벽하게 작동한다는 점은 주목할 가치가 있습니다.
흠, 좋은 지적입니다. "화면 좌표에서 접근성 요소의 프레임입니다." 나는 이것을 처음으로 완전히 놓쳤을 것임에 틀림 없다. 불행히도, -convertRect : toWindow : [화면 창을 갖지 않는 창]은 수정하지 않는 것 같습니다. –
-convertRect : fromView : 무엇을 할 것인가. 그것을 지적 해 주셔서 감사합니다. –