Creating a Great Accessible Reading Experience
Creating an Accessible Reading Experience - WWDC 2019 - Videos - Apple Developer
Agenda
Reading Content Protocol
- text content를 접근가능 한 텍스트로 만들어준다
Automatic Page Turning
- VoiceOver를 사용해서 페이지 넘김을 할 수 있다
Customizing Speech
- VoiceOver가 content를 말하는 방식을 커스터마이징할 수 있는 API 살펴보기
VoiceOver를 사용하려면 설정 > 손쉬운 사용 > VoiceOver를 선택해 켭니다
홈 버튼이나 왼쪽 버튼을 세번 빠르게 클릭 해 VoiceOver를 켜고 끌 수 있습니다.
직접 만든 앱을 빌드하거나 접근성이 적용되지 않은 앱을 켜서 드래그하면 beep만 발생하고 컨텐츠는 읽지 못합니다.
UIAccessibility Reading Content
public protocol UIAccessibilityReadingContent {
// 터치한 위치의 라인 번호를 리턴한다
func accessibilityLineNumber(for point: CGPoint) -> Int
// 지정한 라인 번호의 텍스트 내용을 리턴한다
func accessibilityConntent(forLineNumber lineNumber: Int) -> String?
// 지정한 라인 번호의 화면 프레임을 리턴한다
func accessibilityFrame(forLineNumber lineNumber: Int) -> CGRect
// 전체 내용을 리턴한다
func accessibilityPageContent() -> String?
}
Example
각 페이지는 SessionItemView의 인스턴스로 표시됩니다
각 View는 4개의 Sub view를 가진다. (image view, title label, identifier label, session details view)
추가적으로 layout enum을 정의했고 메소드를 구현하는 데 도움을 줄 것입니다.
페이지를 접근 가능한 element로 만들어야 해서 isAccessibilityElement
를 true
로 설정합니다.
우선 라인 번호를 사용해 페이지를 hitTest 한다. 해당 결과를 위에서 만든 layout enum의 항목과 매핑합니다. 그리고 VoiceOver가 이해할 수 있도록 rawValue를 리턴합니다.
그리고 func accessibilityPageContent() -> String?
함수를 구현하여 접근성 label을 리턴합니다.
Automatic Page Turning
accessibilityTraits = .causesPageTurn
을 하여 자동으로 페이지 넘김이 되도록 할 수 있습니다
Customizing Speech
public protocol UIAccessibilityReadingContent {
func accessibilityAttributedContent(forLineNumber lineNumber: Int) -> NSAttributedString?
func accessibilityAttributedPageContent() -> NSAttributedString?
}
위 프로토콜은 NSAttributedString
를 리턴한다.
예시로 accessibilitySpeechLanguage에 프랑스어를 설정해 프랑스어로 읽게 만들 수 있다.
NSAttributedString(string: "Arc de Triomphe", attributes: [.accessibilitySpeechLanguage: "fr-FR"])
Summary
Reading Content Protocol
Automatic Page Turning
Customizing Speech
'Programming > WWDC' 카테고리의 다른 글
Embedding and Sharing Visually Rich Links 정리 - WWDC2019 (0) | 2020.05.31 |
---|---|
Face Tracking with ARKit 정리 - Tech talks (0) | 2020.05.22 |
What's New in the Apple Push Notification Service 정리 - WWDC16 (0) | 2020.05.11 |
What's New in Universal Links 정리 - WWDC2019 (0) | 2020.04.21 |
Extend Your App’s Presence with Deep Linking 정리 - WWDC2017 (0) | 2020.04.09 |