Подорож до доступних програм:
доступність клавіатури та .NET MAUI
Чи доступна клавіатура ваших додатків? Давайте перевіримо:
-
Запустіть одну з ваших програм.
-
Підключіть фізичну клавіатуру, якщо вона ще не підключена до вашого пристрою.
-
Переміщайтеся у програмі так, як ви зазвичай це робите, і використовуйте для цього лише клавіатуру.
Як вам це вдалося? Чи було легко? Чи збігається це з вашим звичним досвідом навігації у додатку?
Забезпечення того, щоб користуватися додатком так само чудово, як і за допомогою клавіатури, є важливим для створення інклюзивного та доступного для всіх досвіду роботи з додатком.
Настанови з доступності веб-контенту (WCAG)
Щоб зрозуміти, що саме являє собою клавіатурна доступність, варто почати з Керівництва з доступності веб-контенту (WCAG).
WCAG - це набір технічних стандартів веб-доступності, на який часто посилаються і який поширюється на різні додатки та платформи за межами Інтернету. Він став глобальним стандартом і правовим орієнтиром і продовжує розвиватися разом з мінливим ландшафтом технологій.
Серед різних настанов є Guideline 2.1, яку часто не беруть до уваги, в якій йдеться про те, що розробники повинні «Зробити всю функціональність доступною з клавіатури».
Це включає в себе чотири критерії успіху:
Критерій успіху 2.1.1 Клавіатура
Вся функціональність контенту доступна через клавіатурний інтерфейс, не вимагаючи специфічного часу для окремих натискань клавіш, за винятком випадків, коли основна функція вимагає введення, яке залежить від шляху руху користувача, а не тільки від кінцевих точок.
Критерій успіху 2.1.2 Відсутність пастки клавіатури
Якщо фокус клавіатури можна перемістити на компонент сторінки за допомогою клавіатурного інтерфейсу, то фокус можна перемістити з цього компоненту за допомогою лише клавіатурного інтерфейсу, і, якщо для цього потрібно більше, ніж немодифіковані клавіші зі стрілками, табуляції або інші стандартні методи виходу, користувачеві надається інформація про метод переміщення фокусу.
Критерій успіху 2.1.3 Клавіатура (без винятків)
Вся функціональність контенту доступна через клавіатурний інтерфейс, не вимагаючи спеціального часу для окремих натискань клавіш.
Критерій успіху 2.1.4 Символьні комбінації клавіш
Якщо комбінація клавіш реалізована у контенті з використанням лише літер (включаючи великі та малі літери), розділових знаків, цифр або символів, то принаймні одна з наведених нижче ознак є істинною:
Вимкнути Існує механізм для вимкнення комбінації клавіш;
Змінити комбінацію клавіш Існує механізм для зміни комбінації клавіш, щоб додати до неї одну або кілька недрукованих клавіш клавіатури (наприклад, Ctrl, Alt);
Активна лише у фокусі Комбінація клавіш для компонента користувацького інтерфейсу активна лише тоді, коли на цьому компоненті є фокус.
Фундаментальне розуміння цих критеріїв допоможе вам розпочати розробку програм, доступних з клавіатури.
Доступ до клавіатури та .NET MAUI
Окрім інших міркувань, .NET MAUI було розроблено з метою полегшити розробку клавіатурного інтерфейсу. Отже, розробники, знайомі з поведінкою клавіатури Xamarin.Forms, помітили деякі зміни, які були зроблені для покращення доступності клавіатури в їхніх додатках.
Для того, щоб вся функціональність працювала через клавіатурний інтерфейс, важливо, щоб всі інтерактивні елементи управління були клавіатурно орієнтованими (могли отримувати фокус клавіатури) і клавіатурно навігаційними (могли переходити до них і з них за допомогою клавіатури). Це також включає в себе уникнення того, щоб невидимий вміст був доступний за допомогою клавіатури. Так само, як ми повинні очікувати, що видимі елементи керування будуть доступними для клавіатурного фокусу та навігації, ми повинні очікувати, що невидимі/неіснуючі елементи керування не будуть доступними для клавіатури або взагалі не будуть присутніми.
Щоб уникнути клавіатурних пасток, ми гарантуємо, що клавіатурна навігація можлива до всіх відповідних елементів керування у поточному поданні, всередині них та поза ними. Наприклад, якщо ви переміщуєтесь по екрану з декількома CollectionViews, .NET MAUI узгоджується зі стандартними очікуваннями клавіатурної доступності, дозволяючи вам легко переходити до будь-якого з CollectionViews та з нього за допомогою стандартних шаблонів клавіатурної навігації.
Тож як саме .NET MAUI дозволяє вам створювати клавіатурні інтерфейси з більшою легкістю? Ось 3 приклади:
1. Клавіатурна навігація на модальних сторінках
Однією з областей, в якій .NET MAUI навмисно враховує доступність клавіатури, є модальні сторінки. Коли з'являється модальна сторінка, як і для всіх інших сторінок, важливо переконатися, що все на ній доступно. Однак для модальних сторінок особливо важливо переконатися, що все, що знаходиться на основній сторінці, не доступне з клавіатури і не з'являється на модальній сторінці.
Коли з'являється модальна сторінка, фокус має бути на першому клавіатурному елементі керування на сторінці. Після цього весь вміст модальної сторінки має бути доступним, а всі інтерактивні елементи керування, які мають містити опцію виходу (зазвичай «Зберегти» або «Закрити») з модальної сторінки, мають бути сфокусовані на клавіатурі. Після виходу з модальної сторінки фокус має бути повернутий на основну сторінку, і перший елемент керування на основній сторінці повинен знову отримати фокус на клавіатурі.
Цю складність вирішує фреймворк .NET MAUI, тож ваші модальні сторінки будуть доступними для навігації одразу з коробки!
2. Фокусування/розфокусування клавіатури на Android
Під час розробки .NET MAUI ми дізналися ще одну річ, що неможливо «розфокусувати» запис на ранніх версіях Android. Якийсь елемент управління завжди повинен бути сфокусований. У Xamarin.Forms «розфокусувати» елемент можна було, встановивши фокус на макеті сторінки; на жаль, такий підхід створював серйозні проблеми з доступністю. З цих причин .NET MAUI не дозволяє таку недоступну поведінку за замовчуванням і наполегливо рекомендує використовувати інший підхід.
Мотивація використання «фокусування» і «розфокусування» часто пов'язана з показом і приховуванням клавіатури м'якого введення. Замість того, щоб маніпулювати фокусом для досягнення цієї мети, керуйте поведінкою клавіатури за допомогою нових SoftInputExtensions APIs!
Наприклад:

Якщо SoftInputExtensions або інші альтернативні рішення не працюють для ваших потреб у фокусуванні клавіатури, команда .NET MAUI буде рада дізнатися більше про ваш сценарій. Будь ласка, поділіться з нами, щоб ми могли краще зрозуміти ваші потреби в розробці!
З огляду на це, у .NET 8 було введено додаткову властивість HideSoftInputOnTapped. Застосування цієї властивості дозволяє користувачам натискати на сторінку, щоб приховати клавіатуру м'якого введення, і ми рекомендуємо використовувати її лише у виняткових випадках.
3. Прискорювачі клавіатури
Як і у випадку з усіма чудовими, доступними рішеннями, проектування з урахуванням доступності означає проектування для всіх. Це особливо стосується доступності клавіатури, де ввімкнення витонченої поведінки клавіатури приносить користь усім користувачам, від тих, хто використовує клавіатуру як основний режим введення, до досвідчених користувачів, які полюбляють використовувати клавіатурні скорочення, також відомі як клавіатурні прискорювачі.
У .NET MAUI ми створили рішення для клавіатурних прискорювачів. За допомогою клавіатурних прискорювачів усі користувачі клавіатури та робочого столу можуть використовувати комбінації клавіш для активації команд пунктів меню!


Як описано в документації .NET MAUI, ось як можна почати додавати клавіатурні прискорювачі до MenuFlyoutItem в XAML або C#:

Обов'язково включіть клавіатурні прискорювачі у свій додаток .NET MAUI, якщо ви цього ще не зробили, і застосуйте свої нові знання з Критерію Успіху WCAG 2.1.4!
Подорож до доступних додатків
З інтерфейсом .NET MAUI ви можете створювати додатки, повністю доступні з клавіатури і позбавлені клавіатурних пасток, і зробити це простіше, ніж будь-коли раніше.
Якщо ви вперше читаєте «Подорож до доступних додатків», ласкаво просимо! Не забудьте переглянути мої попередні публікації в блозі, щоб дізнатися більше про створення доступних додатків і про те, як .NET MAUI полегшує цей процес.
Ви можете отримати більше інформації про інші покращення доступності клавіатури, зроблені в .NET MAUI, переглянувши останню публікацію в блозі про змістовне впорядкування контенту та рішення про видалення індексу вкладок.
.NET MAUI допомагає вам створювати доступні програми простіше, ніж будь-коли раніше. Як завжди, дайте нам знати, як ми можемо зробити це ще простіше для вас!