UIAccessoryElement, accessoryFrame и поворот экрана не работает - PullRequest
2 голосов
/ 22 декабря 2010

У меня есть подкласс UIControl, который следует неформальному протоколу UIAccessibilityContainer: он возвращает NO для -isAccessibilityElement, доставляет правильный -accessibilityElementCount и элементы в методах доступа.

Каждый элемент UIAccessibilityElement, который создается для представления области доступности,успешно создан, и кадр представляет собой отображение 1: 1 другого CGRect, который я рисую.

Например, я рисую в {94, 99}, {209, 350}} и -accessibilityFrame надля UIAccessibilityElement установлено то же значение CGRect.

Однако при горизонтальной (или перевернутой) ориентации рамки (только для элементов доступности, чертеж все еще работает нормально) поворачиваются неправильно.Левая верхняя точка относительно рамки - это всегда левый верхний угол кнопки «Домой».

Вот скриншот с симулятора:

Screenshot

КакВы можете видеть, что это в альбомном режиме, и кадр совершенно не соответствует тому, что он указывает.

Вот код, управляющий созданием элементов:

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;

Это выглядит каквращение лопнуло, но я не могу на это положиться.Стоит отметить, что он прекрасно работает в портретном режиме.

1 Ответ

1 голос
/ 04 января 2011

accessibilityFrame возвращает свой ответ в экранных координатах без корректировки поворота устройства.

Где-то в документах Apple предлагается использовать [UIWindow convertRect: toWindow:] в этом случае.

...