티스토리 뷰
WWDC 20 - App accessibility for Switch Control 를 본 기록 ✏️
[1] Switch Control 이란?
스위치 컨트롤(Switch Control)은
운동 능력이 제한된 사용자(Users with limited motor abilities)가
하나 이상의 외부 스위치나 버튼을 사용하여 iOS 기기와 상호 작용할 수 있도록 하는 애플 장치에 내장된 기술입니다.
사용자는 이 스위치를 이용해서 커서를 이동시키거나 특정 제스쳐(스크롤, 탭, 볼륨조절 등) 할 수 있습니다.
보통 이러한 스위치나 버튼은 휠체어에 장착되고 사용자는 헤드탭(head taps), 혀 클릭(tongue clicks), 빨대 내쉬기(breathing in or out into a straw) 등으로 스위치를 작동합니다.
WWDC에서 보여주신 실제 사용 사례 입니다!
https://tv.kakao.com/channel/3395492/cliplink/419407247
설정 > 손쉬운 사용 > 스위치 제어 (신체 및 동작 지원 section안에 있음)에 들어가서
스위치 제어를 켜볼 수 있습니다.
(스위치 제어를 키면 오토스캐닝 됩니다!)
그리고 스위치를 폰이랑 연결하는 것은
스위치에 들어가서 할 수 있는 것 같아요!
[2] Switch Control Support
그럼 이런 Switch Control을 지원하려면 어떻게 해야할까요?
Switch Control을 위해 별도의 작업을 해야할 필요가 없는 경우가 많습니다.
접근성 대응을 잘해서 voice over에서 100% accessible 하다면 스위치 컨트롤에도 적합한 앱입니다!
하지만 VoiceOver에는 적용되지 않는 전문적인 동작이 필요하는 등
특별히 스위치 컨트롤 사용자를 대상으로 한 앱을 만들고 싶을 수 있습니다.
이를 위해 관련 API 제공하는데, API를 살펴보기 전에 고려사항부터 알아봅시다!
[3] Special Considerations
Switch Control 사용자에게 적합한 앱을 만들 때는
아래 내용을 고려해야합니다.
1. Timinig
자동 스캐너를 사용할 경우 올바른 항목 또는 그룹이 선택될 때까지 기다려야 하는 경우가 많기 때문에 탭 타이밍이 매우 중요합니다.
실수로 mistap을 하게 되면 간단한 작업을 하는데 더 많은 단계를 발생시킬 수 있기 때문입니다.
2. Navigation efficiency and grouping / Group elements for scanning efficiency and speed
그룹화를 해서 커서 탐색의 효율성과 속도를 높여야합니다.
3. Error-tolerance
(toleracne는 '관용' 이라는 뜻)
일부 스위치 사용자는 떨림 또는 기타 무의식적인 움직임이 있을 수 있습니다. 이는 다른 보조 기술에서 흔히 볼 수 있는 것보다 더 높은 오류율로 이어질 수 있습니다. 모든 데이터를 삭제하거나 로그아웃할 수 있는 옵션이 있는 경우 실수로 한 번 누르면 스위치 제어 사용자에게 상당히 치명적인 영향을 미칠 수 있으므로 오류 허용오차가 매우 중요합니다.
4. Confirm destructive behaviors
앱에 파괴적인(?) 동작이 있는 지 확인합니다.
사용자가 모든 데이터를 삭제하거나 계정을 삭제하는 것이 너무 쉬워서는 안 됩니다.
5. No Timeout
적어도 스위치 제어가 실행 중일 때는 앱에 시간 초과가 발생하지 않도록 하는 것이 좋습니다.
페어링 코드 및 인증 코드를 입력하는 화면에는 보안을 위해 짧은 시간 만료가 발생하는 경우가 많습니다.
그러나 스위치 제어 사용자는 커서 대기 때문에 정보를 더 느리게 입력하고 입력 오류를 수정하는 데 시간이 더 오래 걸리기 때문에 시간 초과가 발생할 수 있습니다.
6. Don't keep private user info on screen
스위치 제어 사용자는 휠체어에 장착된 기기를 사용할 수 있으며, 이는 화면을 비공개로 유지하는 것이 더 어려울 수 있다는 것을 의미합니다. 계정 번호나 의료 정보와 같은 개인 정보를 필요한 시간보다 오래 화면에 표시하지 않도록 합니다.
[4] API
스위치 컨트롤로 하는 게임 앱을 예제로 보여주십니다.
네모친 부분을 그룹핑하고 싶어서 accessibilityNavigationStyle을 combined로 지정해줬고
그룹 안의 순서를 정해주고 싶어서
(4 -> 5 -> 6 순서로 포커스가 이동하도록)
accessibilityElements를 해당 순서로 지정해줬습니다.
그리고 설정에 이런 것을 제공해줘서
카드에 포커스가 가면 자동으로 카드가 뒤집히도록 해볼 것입니다.
accessibilityDidBecomeFocused / accessibilityDidLoseFocus 를 사용해주면 됩니다.
그리고 accessbilityCustomActions 도 추가해줍니다.
그러면 Switch Control의 Top Menu에 나오게 됩니다.
Select Item을 해주는 노란 스위치를 누르니까
Switch Control Menu가 나오더라구요..!
최종 완성 모습은 이렇게 됩니다!
https://tv.kakao.com/channel/3395492/cliplink/419408282
그리고 이외에도 유용한 API는 이런 것들이 있습니다.
'🍏 > Accessibility' 카테고리의 다른 글
[iOS] Reading Content Accessibility (0) | 2021.05.27 |
---|---|
[iOS] Visual Accessibility (3) | 2021.05.27 |
[iOS] Great Accessibility Label (1) | 2021.05.25 |
[MacOS] Mac Catalyst Accessibility (0) | 2021.05.24 |
[iOS] Dynamic Type (0) | 2021.05.21 |
- Total
- Today
- Yesterday
- Flutter Text Gradient
- 플러터 얼럿
- Python Type Hint
- drf custom error
- ipad multitasking
- 플러터 싱글톤
- Sketch 누끼
- SerializerMethodField
- DRF APIException
- 장고 URL querystring
- Watch App for iOS App vs Watch App
- 구글 Geocoding API
- Flutter Spacer
- PencilKit
- Flutter Clipboard
- flutter build mode
- ribs
- METAL
- flutter deep link
- flutter 앱 출시
- cocoapod
- Django Heroku Scheduler
- Django FCM
- Flutter 로딩
- flutter dynamic link
- Dart Factory
- Flutter getter setter
- 장고 Custom Management Command
- Django Firebase Cloud Messaging
- github actions
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |