티스토리 뷰

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로 만들어야 해서 isAccessibilityElementtrue 로 설정합니다.

우선 라인 번호를 사용해 페이지를 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

도움이 되셨다면.. Buy me a coffeeBuy me a coffee
댓글
댓글쓰기 폼