Как я могу сделать так, чтобы голос за кадром в Xamarin не считывал тип представления?

#c# #xamarin #accessibility #voiceover

Вопрос:

Итак, у меня есть изображение, которое используется в качестве кнопки.

 someKindOfButton = new Image
{
   Source = //...
   // stuff like height and width and stuff
};
TapGestureRecognizer tappedImage = new TapGestureRecognizer();
tappedImage.Tapped  = TappedTheImage; // a method to change the value the image is bound to
 

Я добавляю это изображение в свое дерево доступности

 someKindOfButton.SetAutomationProperties("Page.Image.someKindOfButton", "click this nice button")
 

Но когда я фокусируюсь на этой красивой кнопке, она гласит: «Нажмите эту красивую кнопку — Изображение».

Теперь я не уверен, почему это так и как не заставить его читать «Изображение». Это также не единственная проблема, я также прочитал некоторые другие виджеты в других местах, которые мне не нужны, например «Заполнение названия страницы». В некоторых местах я хочу, чтобы это было так, в некоторых я не хочу, чтобы это было так.

Предоставил ли я достаточно информации для выработки решения? Я относительно новичок в области доступности и xamarin и работаю над существующим проектом, поэтому, если вам нужны более подробные сведения, пожалуйста, прокомментируйте их, чтобы я мог их предоставить.

Комментарии:

1. Я не специалист по доступности, но в соответствии с этой документацией ваш код должен быть. AutomationProperties.SetIsInAccessibleTree(someKindOfButton, true); AutomationProperties.SetHelpText(someKindOfButton, "click this nice button");

2. Также примите во внимание, что, безусловно, каждый элемент по-своему читается голосом за кадром. Может быть, вам следует использовать ImageButton?

Ответ №1:

ОБНОВЛЕНИЕ: лучшим решением было бы вместо этого использовать кнопку и назначить ей изображение. Хотя он будет произносить «кнопка», это не будет сбивать с толку.

VoiceOver должен указать тип элемента управления, чтобы пользователь мог знать о действиях, которые он может выполнять. Например, если вы переходите к таблице, очень важно знать, что это таблица, поскольку в ней есть очень специфические команды, которые не поддерживаются другими элементами управления. В некотором роде это похоже на то, что испытывает человек без проблем со зрением — он знает, что это стол, и вы никак не можете скрыть от него этот факт.

Так что, насколько я знаю, это невозможно, и я думаю, что это невозможно по уважительной причине.

Комментарии:

1. Что ж, это все весело и модно, пока у вас нет кликабельного изображения. Почему кликабельное изображение объявляется изображением, если на самом деле оно используется в качестве кнопки? Он доступен для кликабельности, но голос за кадром читает его как изображение. Если вместо этого там написано «кнопка», хорошо, пожалуйста, скажите мне, как это сделать. Но это не единственное место, где я не хочу, чтобы голос за кадром объявлял о таком виде просмотра.

2. @MaritnGe Вы можете назначить кнопке только изображение, а затем она произнесет «кнопка» голосом за кадром и будет выглядеть как изображение на экране.

3. Кнопки нет — изображение и ЕСТЬ кнопка. Кликабельное изображение. Вы хотите сказать, что решение состоит в том, чтобы поместить изображение внутри кнопки или что-то подобное?

4. @MaritnGe да. Кнопка обладает таким свойством. Ему не нужно иметь никакого текста, только изображение, хотя в нем может быть и то, и другое.

5. Префект, тогда я это сделаю! Вы хотите отредактировать свой ответ, чтобы предложить это, чтобы я мог его принять?