У меня есть подкласс UIControl, который следует неформальному протоколу UIAccessibilityContainer: он возвращает NO для -isAccessibilityElement, доставляет правильный -accessibilityElementCount и элементы в методах доступа.
Каждый элемент UIAccessibilityElement, который создается для представления области доступности,успешно создан, и кадр представляет собой отображение 1: 1 другого CGRect, который я рисую.
Например, я рисую в {94, 99}, {209, 350}} и -accessibilityFrame надля UIAccessibilityElement установлено то же значение 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;
Это выглядит каквращение лопнуло, но я не могу на это положиться.Стоит отметить, что он прекрасно работает в портретном режиме.