Как можете да пренаредите начина, по който VoiceOver чете UIAccessibilityElements?

Има 2 отговора на SO относно това, но нито един от тях вече не работи.

Имам персонализиран UITableViewCell. В тази клетка има различни етикети. VoiceOver за достъпност чете нещата отляво надясно, отгоре надолу.

Това е проблем за оформлението на моята клетка. Имам нужда нещата да се четат в определен ред.

Изглежда обаче не мога да променя реда, в който VoiceOver чете нещата по подразбиране.

Опитах self.accessibilityElements = @[self.view5, self.view1, self.view9] например, но това не променя реда.


person chris P    schedule 10.11.2015    source източник


Отговори (2)


Можете да зададете етикета за достъпност на клетката с низа, който създавате, комбинирайки всички подизгледи на клетката, например ако имате lbl1, lbl2, lbl3, btn1:

    NSString *cellAccessibilityString = [NSString stringWithFormat:@"%@,%@,%@,%@", _lbl3.text, _lbl2.text, _btn1.text, _lbl1.text];
    [self setAccessibilityLabel:cellAccessibilityString];

Където себе си е клетката.

person Vadim F.    schedule 16.02.2021

Не, Voice over не работи така. Не можете да промените реда на елементите за достъпност. Можете да пропуснете само някои елементи, които са в стека.

Да приемем, че имате изгледи от 1 до 9 във вертикално оформление

и правиш това:

     self.accessibilityElements = @[self.view5, self.view1, self.view9]

Това не означава, че достъпността първо ще прочете изглед 5, след това изглед 1 и след това изглед 9.

Трябва да дадете поръчка като:

      self.accessibilityElements = @[self.view1, self.view5, self.view9]

Така че гласовият звук ги чете само в ред 1,5,9 и пропуска остатъка!!!!

Отново гласът чете в реда отляво надясно и отгоре надолу!!!

Помислете така: Използвайте self.accessibilityElements само ако искате да добавите/пропуснете достъпността за елементите във вашия изглед, но не и за реда за достъпност!!!

person Teja Nandamuri    schedule 10.11.2015
comment
Предполагам, че това е умишлено от Apple? Не позволявате пренареждане на елементи за достъпност? Voice over чете LtoR, TtoB, стандартизирани за всички изгледи, така че тези, които използват VoiceOver, да разберат точно къде се намира елементът в даденото пространство. Това има смисъл, тъй като HIG на Apple е пълен със стандарти като този, които трябва да се следват. Аз обаче съм любопитен. Какво мислите за този отговор (stackoverflow.com/questions/13279498/) на този въпрос? Звучи, че може да се направи, но с количеството заобиколни решения, които изисква, звучи като може би... - person chris P; 11.11.2015
comment
Виждал съм тестовете за достъпност много пъти. Всеки път фокусът на достъпността трябва да е отгоре надолу и отляво надясно. Ако промените реда на фокусиране, това може да доведе до объркване на слепите хора. Те винаги вярват, че фокусът ще се премести отляво надясно и отгоре надолу. Въпреки че получих идеята да променя реда на фокусиране, не бях насърчен да прилагам такъв тип поведение - person Teja Nandamuri; 11.11.2015
comment
Ако не сте насочени към слепи хора, можете да опитате това. Ще се опитам да внедря това решение и да видя дали наистина работи или не. Ще се върна по-късно и ще актуализирам отговора с резултатите - person Teja Nandamuri; 11.11.2015
comment
някакви добри констатации? Клетката, на която искам да го направя, не може да бъде извършена. Потребителят не може да взаимодейства с нито един от конкретните елементи. Това е буквално просто клетка в стил контекст/изглед/само за четене. Би било хубаво нещата да се четат в определен ред за тази конкретна клетка. - person chris P; 12.11.2015