[WWDC23] Accessibility & Inclusion
Apple에게 접근성은 필수적인 부분.
우리가 앱의 접근성을 매우 쉽게 개선할 수 있도록 애플은 여러가지를 개선
Introduce
- Accessibility enhancements
- 새로운 API에 탐구
- Improve accessibility visual
- SwiftUI에서 접근성 개선
- Keep state up-to-date
- UIKit에서 접근성 최신 상태로 유지하는 방법
새로운 접근성 안내 isToggle을 통해 힌트를 제공
알림
레이아웃 변경
화면 변경
페이지 스크롤 알림을
Swift에 네이티브 방식을 전송 가능
버튼의 행위에 알림을 달 수 있음.
중요도를 설정할 수도 있음.
제 시간에 발음되지 않으면 무시되도 무방한 안내와 꼭 들어야 할 안내와 구분하는 등 더 많은 제어가 가능.
정보의 중요성을 저장할 때 3가지의 안내 우선순위를 지정할 수 있음.
- 높은 우선순위: 다른 음성을 끊을 수 있으며 시작되면 끊길 수 없음.
- 중간 우선순위: 기존 음성을 끊을 수 있지만, 새로운 음성에 끊길 수 있음.
- 낮은 우선순위: 대기열에 추가되며, 다른 음성의 발화가 완료되고 다른 음성이 시작되지 않을경우 시작함.
접근성 문자열을 선언하고, AccessibilityNotification에는 해당 문자 값을 전달
우선순위 배정은 낮은 우선순위 > 기본 > 높은 우선순위로 배정
핀치 제스처 등을 사용할 때도 안내를 활용할 수 있도록 개선
먼저 accessiblityZoomAction을 선언하고 해당 부분에서 접근성 대응
UIKit에서는 accessibilityTrait에서 image와 supportsZoom을 추가하고 오버라이드 한 함수를 구현
- Silent on touch
- 직접 터치 영역을 터치할 때, VoiceOver를 침묵시키도록 제공
- 이러면 앱이 자체 소리 피드백을 제공할 수 있음.
-Requires activation
- VoiceOver가 필요한 직접 터치 영역을 만듦.
- 터치가 발생하기 전에 요소를 활성화
해당 옵션을 적어 줌으로써 직접 터치 영역은 침묵하도록 설정.
보이스 오버가 건반영역에 도달할 시 사운드가 들림.
Improve accessibility visual
SwiftUI의 접근성 형태 종류를 알아볼 예정
접근성 경로를 설정하고, 접근성 요소의 외형을 화면에서 제어
AS IS: 상호작용 콘텐츠 형태 종류가 접근성 형태 및 히트 테스트 형태를 변경
TO BE: 히트 테스트는 그대로 두고 접근성 콘텐츠 형태에만 영향
가령 원같은 접근성 요소가 존재한다면 계산된 접근성 커서 시각화 요소가 화면의 다른 항목을 가릴 수도 있음.
접근성 콘텐츠 타입의 종류가 뷰에 적용되면 해당 요소의 내장된 접근성 지오메트리를 수정하여 제공한 모양에 맞춰 업데이트
이를 통해 요소의 경로로 빠르게 업데이트 가능함.
뷰의 형태를 바꾸는 부분이 접근성에도 적용된다.
아래의 형태를 참고
Keep state up-to-date
UIKit 접근성에 추가될 블록 기반 속성에 대해 알아볼 예정.
이제 뷰에 표현되는 UI가 내장 접근성 속성을 쉽게 유지하는 방법이 있음.
새 접근성 API를 사용해서 값을 직접 저장하는 대신 해당 속성이 필요할 때마다 평가되는 클로저를 제공 가능.
이 클로저는 매 순간 뷰를 참조하고 필요요할 때 해당 값을 참조함.
클로저는 반드시 올바른 순환 참조를 피할 수 있게 주의.
클래스의 생명주기 시작점에 블록을 추가하는게 가장 좋음.
요약
- 직접 터치 등의 기능과 토글 같은 접근성 특성을 통합해 사용성을 높이는 것을 고려하기.
- SwiftUI에서 뷰에 커서가 가리지 않는 부분을 고려하기.
- 접근성 확인하기 경우에 따라 블록 기반 설정이 더 잘들어맞는지 확인.
애플은 접근성이 인권이라고 믿음.
'apple > Docs, iOS, Swift' 카테고리의 다른 글
[WWDC24] Genmoji로 앱에서 더욱 풍부한 표현 선보이기 (0) | 2024.08.03 |
---|---|
[WWDC24] SwiftUI 컨테이너 쉽게 이해하기 (0) | 2024.08.02 |
[WWDC24] Swift의 성능 살펴보기 (1) | 2024.07.28 |
[WWDC24] AVFoundation의 미디어 성능 지표 살펴보기 (1) | 2024.07.28 |
[Swift] JSON 형태로 바꾸는 방법 (0) | 2024.06.18 |