Маркер доступности IOS не перемещается - PullRequest
0 голосов
/ 05 февраля 2019

У нас есть невидимые UIViews, настроенные и помеченные как доступные для голоса IOS.Смахивание перемещает маркер контура из одного вида в другой, но если мы перемещаем позицию вида с помощью SetFrame, и это текущий выбранный вид для Voiceover, он не перемещает кадр вместе с ним.Если мы затем коснемся или перетащим на тот же вид, он поднимет новую позицию.

Есть идеи, как программно переместить контур?

Вот наш грубый код

Мыподдерживать массив областей и текстов на экране, которые должны быть видностями доступности, и создавать и обновлять невидимые виды над этими областями.

// Если мы обнаружим, требуется новое представление

LocalAccBounds[i].view= [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 64, 64)] retain];
LocalAccBounds[i].view.backgroundColor=[UIColor clearColor];
LocalAccBounds[i].view.isAccessibilityElement = true;
LocalAccBounds[i].view.userInteractionEnabled = false;      
LocalAccBounds[i].view.accessibilityLabel = [NSString stringWithCString:LocalAccBounds[i].txt encoding:NSUTF8StringEncoding];
UIViewController * lVC = [[[UIApplication sharedApplication] keyWindow] rootViewController];
[lVC.view addSubview:LocalAccBounds[i].view];

// Если мы обнаружим, что существующее представление переместилось

[LocalAccBounds[i].view setFrame:CGRectMake(LocalAccBounds[i].x1*xsc,LocalAccBounds[i].y1*ysc, LocalAccBounds[i].x2*xsc-LocalAccBounds[i].x1*xsc, LocalAccBounds[i].y2*ysc-LocalAccBounds[i].y1*ysc-0)];

// Если мы обнаружим, что существующее представление больше не требуется

[LocalAccBounds[i].view removeFromSuperview];
[LocalAccBounds[i].view release];
LocalAccBounds[i].view=0;

Когда мы перемещаем существующее представление, например, прокручиваемих влево или вправо, это не перемещает контур с видомИногда через секунду или около того маркер контура перемещается к одному или другому из существующих контуров, но не обязательно там, где было последнее касание.

Спасибо

Шон

1 Ответ

0 голосов
/ 07 февраля 2019

Я не совсем понимаю ваш вариант использования, но в соответствии с тем, что написано в вашем посте, я предлагаю:

  • Создайте ваше представление доступности с помощью свойства accessibilityFrameInContainerSpace.
  • Взгляните на неофициальный протокол UIAccessibilityFocus, чтобы следовать вашим фокусам доступных элементов.

Эти два отведения должны помочь вам достичь цели в соответствиик тому, что я смутно понял из твоей проблемы.

...