iOS 13에서 변경된 접근성 기능 알아보기 2부
안녕하세요, 엔비전스입니다.
iOS 13에서 변경된 접근성 기능 알아보기 1부에서는 주로 접근성 테스트 시에 참고할 수 있는 변경 사항에 대해 알아보았습니다. 2부 아티클에서는 접근성 테스트와는 크게 관련은 없지만 참고할 수 있는 변경 사항들에 대해 다루어 보도록 하겠습니다.
데이터 이해하기 로터 추가
VoiceOver에서는 두 손가락 시계 방향 혹은 시계 반대 방향으로 돌리기를 통해서 읽기 단위, 탐색 단위 등을 조절할 수 있는 여러 로터 기능을 제공하고 있습니다. 이번 iOS 13에서는 차트를 스크린 리더 사용자가 탐색할 수 있는 데이터 이해하기 로터가 추가되었습니다. 해당 기능은 2019년 10월 현재, API가 외부에 공개되지는 않아 현재는 차트 개발 시 해당 기능은 적용이 불가능하지만 아이폰 설정 > 배터리의 배터리 사용량 관련 차트에서 테스트해볼 수 있습니다. 데이터 이해하기 로터에서는 차트에 대한 대략적인 설명과 오디오 사운드로 차트 들어보기, 데이터 시리즈 설명, 데이터 요약으로 나누어지며 커스텀 액션과 마찬가지로 데이터 이해하기 로터를 사용할 수 있는 곳에 포커스 되면 자동으로 해당 로터로 설정됩니다.
차트 접근성 API가 외부에 공개되어 차트가 포함된 부분의 접근성을 쉽게 개선할 수 있기를 바라봅니다.
수직 스크롤바 접근
iOS의 scroll view에서는 연속적 스크롤, 행 단위 스크롤, 페이지 단위 스크롤 등 여러 스크롤 메서드를 지원하고 있습니다. 그중 페이지 단위 수직 스크롤되는 스크롤바가 표시되는 경우 이를 VoiceOver에서 접근 가능합니다. 해당 스크롤 뷰 메서드가 적용된 화면에서 스크린 리더 사용자는 화면 우측 하단을 터치하여 현재 탐색 중인 화면이 스크롤 뷰 기준, 몇 페이지에 해당하는지, 총 콘텐츠 대비 몇 퍼센트에 해당하는지를 알 수 있으며 adjustable trait가 적용되어 있어 한 손가락 위 또는 아래 쓸기로 페이지를 조절할 수도 있습니다. 아이폰 설정 초기 화면에서 이를 테스트 가능합니다.
사운드 및 햅틱
최신 아이폰 기종에서는 햅틱 피드백 기능이 포함되어 있으며 스위치 컨트롤에서의 켜짐 혹은 꺼짐 피드백 등을 햅틱 피드백으로도 지원해 왔습니다. 또한 안드로이드에서의 TalkBack 또한 초점이 이동될 때 진동 피드백 제공 여부를 온/오프 할 수 있었습니다.
iOS 13에서는 VoiceOver 설정 > 오디오 > 사운드 및 햅틱에서 햅틱 기능을 온/오프 할 수 있으며 켜짐으로 설정할 경우 초점 이동 시 햅틱 피드백을 받게 됩니다.
또한 VoiceOver에는 화면 변경 시, 페이지 스크롤 시, 터치 컨테이너 탐색함 등의 사운드가 기본 지정되어 있는데 각 사운드 혹은 햅틱 피드백을 온/오프 할 수 있으며 미리 보기를 이용하여 각 사운드를 들어볼 수 있습니다.
커스텀 액션의 확장
최신 아이폰 11 모델에서는 3D 터치가 제거되었습니다. 따라서 3D 터치를 지원하는 앱에 초점 이동 시 커스텀 액션을 통하여 3D 터치로 지원되는 빠른 메뉴를 확인하고 활성화할 수 있습니다. 커스텀 액션은 드래그해야 하는 기능을 마치 메뉴처럼 이용하게 하거나 중복되는 여러 버튼들을 빠르게 뛰어넘을 수 있는 기능을 포함하므로 우리나라의 많은 앱에서 더 적극적으로 기능 도입이 지원되기를 바라봅니다. 커스텀 액션은 UIAccessibilityCustomAction을 사용하면 됩니다.
제스처 및 단축키 변경
안드로이드 TalkBack에서는 일부 동작 제스처를 변경하거나 블루투스 키보드 단축키를 변경하는 기능을 예전부터 지원해 왔습니다. iOS 13 버전부터 VoiceOver에서도 동작 화면에서 한 손가락 이중 탭, 한 손가락 한번 탭 등의 기본적인 제스처를 제외하고는 각 기능의 제스처 변경이 가능합니다.
여기서 기존 제스처에 매핑 되어 있지 않은 제스처 중 몇 가지 유용한 제스처로는 컨테이너 상단과 하단 이동, 항목 주시, 특정 로터 제스처 추가 입니다.
- 컨테이너 상, 하단 이동: 각 앱 뷰의 화면은 여러 컨테이너로 구성되어 있는데 특정 컨테이너의 경우 VoiceOver가 인식 가능한 컨테이너 제목을 지정해 주지 않을 경우 레이아웃 파악이 어려울 수 있습니다. 이 때 제목 지정 관련 이슈를 리포트 하기 위해 각 컨테이너의 영역 시작 지점과 끝 지점을 파악해야 할 때가 있는데 이 때 유용하게 사용할 수 있습니다. 예를 들어 현재 VoiceOver 설정 화면에 위치한 경우 해당 화면에는 UINavigationController 컨테이너와 메인 컨테이너로 나누어지게 되는데 뒤로 버튼에 포커스 하고 컨테이너 상, 하단 기능을 이용하면 뒤로 버튼과 VoiceOver 머리말 사이에서만 초점이 이동하게 됩니다.
참고로 특정 컨테이너에 VoiceOver가 인식 가능한 제목을 지정하려면 accessibilityContainerType을 semantic group으로 설정하고 accessibilityLabel을 통해 컨테이너 제목을 지정해 주면 됩니다.
- 특정 로터 제스처: 링크, 헤딩, 목록 리스트 등을 기존에는 블루투스 키보드를 사용하지 않는 한 로터 단위로만 이동이 가능하였으나 특정 제스처에 해당 기능을 삽입할 수 있으므로 웹페이지 테스트 시 다음 링크나 헤딩 등을 특정 제스처로 삽입하여 사용이 가능합니다.
- 항목 주시: 콘텐츠의 특정 view 텍스트가 업데이트될 때 업데이트된 내용을 자동으로 읽게 하려면 일반적으로 UIAccessibilityAnnouncementNotification 메서드를 사용합니다. 또한 스톱워치와 같이 실시간으로 콘텐츠가 계속 업데이트되는 요소에는 updateFrequently trait를 사용합니다. 그런데 updateFrequently trait는 적용된 요소에 포커스가 되어 있어야 업데이트되는 콘텐츠를 몇 초 간격으로 읽어주며 UIAccessibilityAnnouncementNotification 메서드의 경우 적용이 되어 있지 않은 경우도 있으므로 사용자가 특정 view 콘텐츠를 현재 VoiceOver 초점과 상관없이 실시간으로 계속 읽어주게 해야 할 때 해당 기능을 사용할 수 있습니다.
위에서 언급한 기능 외에도 각 애플리케이션 혹은 문맥에 따른 VoiceOver 환경 설정 프로필 만들기, 문장부호(구두점) 프로필 만들기 및 적용, 대체 텍스트 없는 view에 대한 텍스트 유추, 카메라에서의 수평 맞춤 가이드 지원 등 여러 기능이 추가되었으며 한국어에서는 지원하지 않지만 음성 명령만으로 화면 상에 있는 여러 객체 중 하나를 실행하거나 여러 제스처를 수행할 수 있는 음성 컨트롤 기능 역시 추가되었습니다.
지금까지 iOS 13에서 변경된 접근성 기능에 대해 살펴보았습니다. 이 아티클을 통해 iOS 플랫폼의 접근성 기능을 이해하는 데 도움이 되었으면 좋겠습니다.