관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] 5. VoiceOver 접근성 실전 - 접근성 계층관계 본문

iOS 응용 (swift)

[iOS - swift] 5. VoiceOver 접근성 실전 - 접근성 계층관계

jake-kim 2023. 12. 18. 01:17

1. VoiceOver 접근성 실전 - 개발 시작하기 (손쉬운 사용 단축키, Accessibility Inspector, 테스트)

2. VoiceOver 접근성 실전 - 개념 (isAccessibilityElement, accessibilityTraits, accessibilityLabel, accessibilityHint, accessibilityValue, accessibilityElements)

3. VoiceOver 접근성 실전 - 접근성 처리 (순서 처리, 이미지 인식, accessibility label, value, traits, hint 사용)

4. VoiceOver 접근성 실전 - UIAccessibility Notification (post, 노티)

5. VoiceOver 접근성 실전 - 접근성 계층관계

접근성 계층 관계

  • addsubview하여 뷰를 추가하면 이벤트가 발생할때 이벤트를 받는 뷰는 가장 subview이지만 접근성은 반대로 superview가 받는것을 알기
    • 빨간뷰 - 초록뷰 - 파란뷰 순서대로 a, b, c View라고 할 때, 모두 접근성이 켜져있는 경우 (isAccessibilityElement = true) 실제로 접근성은 aView만 적용됨

  • 여기서 bView (초록색뷰)만 접근성 포커싱이 가도록 하는 방법?
    • aView의 접근성만 끄기 (접근성은 항상 supview가 우선으로 받고 하위 뷰들의 접근성을 막으므로 cView의 접근성이 켜져있어도 포커싱 x)
aView.isAccessibilityElement = false
// cView의 isAccessibilityElement 값은 true or false 상관 없음
  • 마찬가지로 cView의 접근성만 키고싶은 경우, aView와 cView의 접근성을 꺼야 활성화됨

계층관계 관리 방법

  • aView, bView, cView 모두 접근성 포커싱이 가도록 하는 방법?
  • accessibilityElements를 사용하여 처리
view.accessibilityElements = [aView, bView, cView]
  • 만약 4개의 뷰들의 접근성이 활성화 되어 있을 때, cView, label 두개의 뷰를 접근성 비활성화 하는 방법?
view.accessibilityElements = [aView, bView, cView, label]
  • 위 elements 배열에서 빼거나 아래처럼 두 개에 각각 isAccessibilityElement를 false로 설정
cView.isAccessibilityElement = false
label.isAccessibilityElement = false
Comments