apple/Docs, iOS, Swift

[WWDC23] Accessibility & Inclusion

lgvv 2024. 7. 31. 00:18

[WWDC23] Accessibility & Inclusion

 

Apple에게 접근성은 필수적인 부분.

우리가 앱의 접근성을 매우 쉽게 개선할 수 있도록 애플은 여러가지를 개선

 

 

Introduce

- Accessibility enhancements

   - 새로운 API에 탐구

- Improve accessibility visual

   - SwiftUI에서 접근성 개선

- Keep state up-to-date

   - UIKit에서 접근성 최신 상태로 유지하는 방법

 

 

SwiftUI와 UIKit에서 접근성

 

새로운 접근성 안내 isToggle을 통해 힌트를 제공

 

새로운 이벤트

 

알림

레이아웃 변경

화면 변경

페이지 스크롤 알림을

Swift에 네이티브 방식을 전송 가능

 

 

새로운 접근성

 

버튼의 행위에 알림을 달 수 있음.

 

 

중요도 설정

중요도를 설정할 수도 있음.

제 시간에 발음되지 않으면 무시되도 무방한 안내와 꼭 들어야 할 안내와 구분하는 등 더 많은 제어가 가능.

 

정보의 중요성을 저장할 때 3가지의 안내 우선순위를 지정할 수 있음.

- 높은 우선순위: 다른 음성을 끊을 수 있으며 시작되면 끊길 수 없음.

- 중간 우선순위: 기존 음성을 끊을 수 있지만, 새로운 음성에 끊길 수 있음.

- 낮은 우선순위: 대기열에 추가되며, 다른 음성의 발화가 완료되고 다른 음성이 시작되지 않을경우 시작함.

 

 

 

SwiftUI에서 버튼 클릭

 

접근성 문자열을 선언하고, AccessibilityNotification에는 해당 문자 값을 전달

우선순위 배정은 낮은 우선순위 > 기본 > 높은 우선순위로 배정

 

UIKit에서 버튼 클릭

 

 

 

 

핀치 제스처 등을 사용할 때도 안내를 활용할 수 있도록 개선

SwiftUI accessibiltyZoomAction

 

먼저 accessiblityZoomAction을 선언하고 해당 부분에서 접근성 대응

 

UIKit에서 구현

 

UIKit에서는 accessibilityTrait에서 image와 supportsZoom을 추가하고 오버라이드 한 함수를 구현

 

- Silent on touch

   - 직접 터치 영역을 터치할 때, VoiceOver를 침묵시키도록 제공

   - 이러면 앱이 자체 소리 피드백을 제공할 수 있음.

-Requires activation

   - VoiceOver가 필요한 직접 터치 영역을 만듦.

   - 터치가 발생하기 전에 요소를 활성화

키보드 건반에 보이스 오버 옵션추가

해당 옵션을 적어 줌으로써 직접 터치 영역은 침묵하도록 설정.

보이스 오버가 건반영역에 도달할 시 사운드가 들림.

 

UIKit에서도 가능함.

 

Improve accessibility visual

SwiftUI의 접근성 형태 종류를 알아볼 예정

접근성 경로를 설정하고, 접근성 요소의 외형을 화면에서 제어

AS IS: 상호작용 콘텐츠 형태 종류가 접근성 형태 및 히트 테스트 형태를 변경

TO BE: 히트 테스트는 그대로 두고 접근성 콘텐츠 형태에만 영향

 

가령 원같은 접근성 요소가 존재한다면 계산된 접근성 커서 시각화 요소가 화면의 다른 항목을 가릴 수도 있음.

접근성 콘텐츠 타입의 종류가 뷰에 적용되면 해당 요소의 내장된 접근성 지오메트리를 수정하여 제공한 모양에 맞춰 업데이트

이를 통해 요소의 경로로 빠르게 업데이트 가능함.

 

접근성 요소

 

뷰의 형태를 바꾸는 부분이 접근성에도 적용된다.

 

아래의 형태를 참고

좌 기존, 우 최신

 

 

Keep state up-to-date

 

UIKit 접근성에 추가될 블록 기반 속성에 대해 알아볼 예정.

 

이제 뷰에 표현되는 UI가 내장 접근성 속성을 쉽게 유지하는 방법이 있음.

새 접근성 API를 사용해서 값을 직접 저장하는 대신 해당 속성이 필요할 때마다 평가되는 클로저를 제공 가능.

이 클로저는 매 순간 뷰를 참조하고 필요요할 때 해당 값을 참조함.

blcok

 

클로저는 반드시 올바른 순환 참조를 피할 수 있게 주의.

클래스의 생명주기 시작점에 블록을 추가하는게 가장 좋음.

 

 

요약

- 직접 터치 등의 기능과 토글 같은 접근성 특성을 통합해 사용성을 높이는 것을 고려하기.

- SwiftUI에서 뷰에 커서가 가리지 않는 부분을 고려하기.

- 접근성 확인하기 경우에 따라 블록 기반 설정이 더 잘들어맞는지 확인.

 

애플은 접근성이 인권이라고 믿음.