iOS 응용 (swift)
[iOS - swift] 5. VoiceOver 접근성 실전 - 접근성 계층관계
jake-kim
2023. 12. 18. 01:17
1. VoiceOver 접근성 실전 - 개발 시작하기 (손쉬운 사용 단축키, Accessibility Inspector, 테스트)
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