수색…


소개

iOS의 접근성으로 인해 청각 장애가있는 사용자는 시각 장애가있는 사용자가 VoiceOver, Voice Control, Black on White, Mono Audio, Speech to Text 등의 다양한 기능을 지원하여 iOS 및 응용 프로그램에 액세스 할 수 있습니다. iOS 앱에서 접근성을 제공한다는 것은 모든 사람이 앱을 사용할 수있게하는 것을 의미합니다.

보기에 액세스 가능하게 만들기

UIView 보이도록 UIView 하위 클래스를 액세스 가능 요소로 표시하십시오.

myView.isAccessibilityElement = YES;

뷰가 의미있는 레이블, 값 및 힌트를 말하게하는지 확인하십시오. Apple은 접근성 프로그래밍 가이드 에서 올바른 설명을 선택하는 방법에 대해 자세히 설명합니다.

접근성 프레임

접근성 프레임은 VoiceOver가 히트 테스트 터치, VoiceOver 커서 그리기, 사용자가 화면을 두 번 탭할 때 탭을 시뮬레이션 할 위치를 계산하는 데 사용됩니다. 프레임은 화면 좌표에 있음을 유의하십시오!

myElement.accessibilityFrame = frameInScreenCoordinates;

요소 또는 화면 레이아웃이 자주 변경되는 경우에는 - accessibilityFrame 을 재정 의하여 최상위 rect를 항상 제공하는 것이 좋습니다. 스크롤 뷰 서브 뷰의 화면 상대 프레임을 계산하는 것은 오류가 발생하기 쉽고 지루할 수 있습니다. iOS 10에는 accessibilityFrameInContainerSpace 라는 새로운 API가 추가되었습니다.

화면 변경

VoiceOver는 대부분의 시간 동안 멋지게 작동하며 화면을 내용으로 가득 찬 소리로 읽고 사용자를 직관적으로 따라갑니다. 아아, 일반적인 해결책은 완벽하지 않습니다. 때로는 앱 개발자 인 여러분 만이 VoiceOver가 최적의 사용자 환경에 초점을 맞추어야하는 위치를 알고 있습니다. 다행히도 VoiceOver는 포커스가 속한 위치에 대한 단서를 찾기 위해 시스템 접근성 알림을 수신합니다. VoiceOver 커서를 수동으로 이동하려면 액세스 가능성 화면 변경 알림을 게시하십시오.

UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, firstElement);

이 알림이 게시되면 짧은 일련의 신호음이 사용자에게 변경 사항을 알립니다. 두 번째 매개 변수는 초점을 맞출 다음 요소이거나 변경 사항을 알리는 문자열 일 수 있습니다. VoiceOver 환경이 좋지 않고 다른 해결 방법이없는 경우 화면 변경 알림 만 게시하십시오. VoiceOver 커서를 움직이는 것은 관측 된 사용자의 화면을 파킹하는 것과 같습니다. 그렇게 성가심과 방향 감각을 잃을 수도 있습니다.

레이아웃 변경

대부분의 경우 단일 화면 내의 콘텐츠가 새 콘텐츠 나 다른 콘텐츠로 업데이트됩니다. 예를 들어, 이전 질문에 대한 사용자의 대답에 따라 추가 옵션을 나타내는 양식을 상상해보십시오. 이 경우 "레이아웃 변경"알림을 통해 새 요소에 변경 사항이나 포커스를 알릴 수 있습니다. 이 알림은 화면 변경 알림과 동일한 매개 변수를 허용합니다.

UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, firstElement);

발표

공지 사항은 "화면 잠김"또는 "완료된로드"와 같은 상호 작용이 필요하지 않은 이벤트에 대해 사용자에게 경고하는 데 유용합니다.보다 구체적인 공지 사항을 사용하여 화면 변경 사항이나 사소한 레이아웃 변경 사항을 사용자에게 알립니다.

UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, @"The thing happened!");

요소 순서 지정

VoiceOver는 뷰 계층에 관계없이 왼쪽 위에서부터 오른쪽 아래로 탐색합니다. 이것은 일반적으로 시각적 인 개인이 화면을 "F 자 모양의 패턴"으로 스캔하는 경향이 있으므로 왼쪽에서 오른쪽 방향으로 내용이 배열되는 방식입니다. VoiceOver 사용자는 일반 사용자와 동일한 방식으로 탐색 할 것으로 예상됩니다. 예측 가능성과 일관성은 접근성 측면에서 매우 중요합니다. 기본 동작 (예 : 스 와이프 명령에서 탭 표시 줄 순서 지정)을 "개선"하는 사용자 지정을 삼가하십시오. 즉, 앱의 요소 순서가 놀랄 것이라는 의견을받은 경우 경험을 향상시킬 수있는 몇 가지 방법이 있습니다.

VoiceOver가 다음의 뷰의 하위 뷰를 읽지 만 그렇지 않은 경우 VoiceOver가 단일 뷰에 포함 된 요소와 관련되어 있음을 힌트를 얻어야 할 수도 있습니다. shouldGroupAccessibiltyChildren 을 설정 shouldGroupAccessibiltyChildren .

myView.shouldGroupAccessibilityChildren = YES;

여러 컨테이너에 걸쳐 있거나 UIKit없이 렌더링 된 인터페이스를 포함하는 복잡한 탐색 구조를 지원하려면 부모 뷰에 컨테이너 프로토콜을 구현하는 것이 좋습니다.

접근성 컨테이너

VoiceOver는 대부분의 UIKit 클래스가 UIAccessibilityProtocol 구현하기 때문에 iOS에서 많은 앱을 탐색 할 수 있습니다. Core Graphics 또는 Metal을 사용하여 그리기를 수행하는 응용 프로그램을 포함하여 UIView 사용하여 화면상의 요소를 나타내지 않는 기능은 액세스 가능성을 위해 이러한 요소를 설명해야합니다. iOS 8.0 UIView 액세스 할 수없는 요소가 포함 된 UIView 속성을 할당하여이 작업을 수행 할 수 있습니다.

myInaccessibleContainerView.accessibilityElements = @[elements, that, should, be, accessible];

어레이의 각 객체의 인스턴스 일 수 UIAccessibilityElement 또는 준수 다른 클래스 UIAccessibilityProtocol . 자식 요소는 사용자가 탐색해야하는 순서로 반환되어야합니다. 애플리케이션 작성자는 접근성 컨테이너를 사용하여 VoiceOver 스 와이프 탐색의 왼쪽 위에서 아래로의 기본 순서를 재정의 할 수 있습니다. UIView UIAccessibilityProtocol 구현하면 UIAccessibilityElementUIView 인스턴스를 같은 자식 접근성 요소 배열에 결합 할 수 있습니다. 요소를 수동으로 할당하는 경우 동적 접근성 프로토콜 메서드를 구현할 필요가 없지만 VoiceOver에서 요소를 검색하기 위해 화면 변경 알림을 실행해야 할 수도 있습니다.

모달 뷰

모달보기는 작업이 완료 될 때까지 사용자의주의를 완전히 포착합니다. iOS는 경고 또는 팝업과 같은 모달보기가 표시 될 때 다른 모든 콘텐츠를 흐리게하고 비활성화하여 사용자에게이를 명확하게합니다. 커스텀 모달 인터페이스를 구현 한 앱은 VoiceOver에게 accessibilityViewIsModal 을 설정하여이 뷰가 사용자의 전적인 관심을받을만한 가치가 있음을 암시해야합니다. 이 속성은 모달 뷰에 포함 된 요소가 아닌 모달 콘텐츠가 포함 된 뷰에만 설정해야합니다.

myModalView.accessibilityViewIsModal = YES;

보기에 모달로 태그를 지정하면 VoiceOver가 형제보기를 무시합니다. 이 속성을 설정 한 후에도 VoiceOver가 여전히 앱의 다른 요소를 탐색하는 경우 모달이 종료 될 때까지 문제보기를 숨기십시오.

요소 숨기기

대부분의 UIKit 클래스 (UIView 포함)는 UIAccessibilityProtocol 준수하며 기본적으로 올바른 값을 반환합니다. hidden으로 설정 한 UIView 도 접근성 계층에 없으며 VoiceOver에서 탐색하지 않는다는 것은 당연한 것입니다. 이 기본 동작은 일반적으로 충분하지만보기가보기 계층에 있지만 표시 또는 탐색이 불가능한 경우가 있습니다. 예를 들어, 단추 컬렉션은 다른보기에 의해 겹쳐져 보이지 않는 사용자에게 보이지 않게 할 수 있습니다. 그러나 VoiceOver는 기술적으로 UIKit 에서 숨겨져 있지 않으므로 여전히 내비게이션을 시도하므로 접근성 계층에 여전히 존재합니다. 이러한 경우 VoiceOver에 부모보기에 액세스 할 수 없다는 힌트를 제공해야합니다. 뷰가 화면 밖으로 나올 때 숨김으로 설정하여 UIKit에서 뷰를 명시 적으로 숨김으로써 이렇게 할 수 있습니다.

myViewFullofButtons.hidden = YES;

또는 부모보기를 표시 한 상태로두고 접근 가능성 계층에서 자식을 숨길 수 있습니다.

myViewFullofButtons.accessibilityElementsHidden = YES;

임시보기는 액세스 가능성 계층 구조에서 요소를 숨기고 사용자에게 표시되도록하려는 또 다른 장소입니다. 예를 들어, 볼륨 버튼을 눌렀을 때 나타나는 뷰는 관찰 된 사용자에게 표시되지만 일반적인 경고의 방식에주의를 기울이지는 않습니다. VoiceOver가 사용자를 방해하고 커서를 새로운 볼륨을 발표하기 위해 무엇을 하던지 멀리 이동시키지 않기를 원할 것입니다. 특히 조정 볼륨은 클릭 소리를 통해 청각 피드백을 제공합니다. 이 경우 accessibilityElementsHidden 사용하여보기를 숨기려고합니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow