티스토리 뷰

반응형

안녕하세요 :) Zedd입니다.

저번에 <접근성이란?>글을 쓰면서 접근성에 대해 조금 알아봤는데요, 오늘은..실전...?........꼭 써보고싶어요 :)

==>라고 시작은 했지만, 시작하기 전에 프로그래밍 가이드를 봐야할 것 같네요. 


"세상에서 가장 강력한 테크놀로지란 곧 모든 사람이 사용할 수 있는 테크놀로지를 의미합니다."


ㅎㅎ이걸 읽으면 뭔가..자극된달까......힘내봅시다.

시작할게요.

그리고 접근성에 관심 있으신 분은 여기에 들어가보세요. iOS개발자를 위한 접근성을 공부하기 위한 링크가 가득..

저는 그 중 첫번째인 Accessibility Programming Guide for iOS를 먼저 알려고 하는거구요 ㅎㅎ..


+ 그전에!!!!!!!! 접근성에는 어떤 종류?가 있는지 먼저 봅시다..


Captioning and Audio Descriptions

iOS를 사용하면 비디오 재생 중에 캡션과 오디오 설명을 구성할 수 있습니다. 앱의 미디어 재생중에 캡션 및 오디오 설명에 대한 지원기능이 내장 된 AVFoundation을 사용하세요.

Display Customization
iOS는 굵은 글씨, 고 대비 커서, 투명도 감소, 어두운 모드 등 동작 감소를 포함하여 디스플레이를 사용자가 정의 할 수 있는 다양한 기능을 제공합니다.
UIAccessibility API를 사용하면 앱이 올바르게 작동하도록 이러한 설정을 사용할 수있는시기를 감지 할 수 있습니다.


Speech

iOS기기는 30개 이상의 언어로, 앱에서 선택한 텍스트를 크게 읽을 수 있으며, 음성의 사투리 및 말하기 속도를 조정 할 수 있습니다(사투리 대박..한국은 안되겠죠ㅎㅎ?..)AVSpeechSynthesizer 클래스는 iOS 장치의 텍스트에서 합성 된 음성을 생성하고 진행중인 음성의 진행 상태를 제어하거나 모니터링하는 방법을 제공합니다.


VoiceOver

VoiceOver는 앱의 객체와 상호 작용하는 스크린 리더로, 사용자가 볼 수 없더라도 인터페이스를 사용할 수 있습니다. (눈이 안보이는 사람들이 사용 할 수 있겠죠?)

앱의 사용자 인터페이스 요소에 접근과 유용함을 보장하세요.


Guided Access

Guided Access는 자폐증이나 기타 주의력 및 감각 문제를 가진 사람들이 당면한 과제에 집중할 수 있도록 도와줍니다. 부모님, 선생님 또는 치료사는 iOS 기기가 홈 버튼을 사용 중지하여 한 앱에 머 무르도록 제한 할 수 있으며 화면의 특정 영역에서 터치 입력을 제한 할 수도 있습니다.

에 Guided Access 프로토콜을 구현하면 사용자의 필요에 따라 작동하는 앱의 부분을 지정할 수 있습니다. 간병인은 설정이나 도움말과 같은 민감한 영역에 대한 액세스를 쉽게 제어 할 수있어 학생들이 집중하지 못하게 할 수 있습니다. 


이제 진짜 시작할게요.




Accessibility Programming Guide for iOS



iOS 3.0이상을 사용하면, 시각 장애가 있는 사용자가 iOS기반 기기를 사용할 수 있도록 VoiceOver를 사용 할 수 있습니다.

iOS 3.0에 도입된 UI 접근성 프로그래밍 인터페이스는 VoiceOver사용자가 자신의 App에 접근 할 수 있게 도와줍니다. VoiceOver는 App의 사용자 인터페이스를 설명하고, 음성 및 사운드를 사용하여 앱의 View및 컨트롤를 탐색하는 데 도움을 줍니다. 

iOS 3.0이상에서 실행되는 iPhone 앱은 VoiceOver사용자가 접근 할 수 있어야 합니다. 


 

Understanding Accessibility on iOS

처음부터 iOS기반 장치에는 시각적 음성 메일, Mail의 큰 글꼴, 웹 페이지, 사진 및 지도의 확대를 포함하여 모든 사람이 쉽게 사용 할 수 있게 해주는 몇가지 기능이 포함되었습니다. 다음과 같은 접근성 기능을 추가하면, 시각장애, 청각장애 및 신체장애를 가진 사람들이 자신의 장치를 사용하는 것이 더 쉬워집니다.


Zoom(확대). 전체 장치 화면을 확대합니다.

● White on Black. 디스플레이의 색상을 반전시킵니다.

● Mono Audio. 왼쪽과 오른쪽 채널의 사운드를 양쪽에서 재생되는 모노신호로 결합합니다.

● Speak Auto-text. 사용자가 입력하는 동안 iPhone이 텍스트 수정 및 추천을 말합니다.

● Voice Control. 사용자가 음성 명령을 사용하여 전화를 걸 수 있습니다. (Siri겠죠 아마?)

또한 시각장애가 있는 사용자는 VoiceOver를 사용하여 기기 사용에 도움을받을 수 있습니다.


Accessibility and VoiceOver

VoiceOver는 화면을 보지 않고도 사용자가 장치를 제어 할 수 있게 해주는 Apple의 혁신적인 화면 읽기 기술입니다.
VoiceOver는 앱의 사용자 인터페이스와 사용자 터치 사이의 중개자 역할을 하여 앱의 요소 및 동작에 대한 설명을 제공합니다.
VoiceOver가 활성화 되어있으면 사용자가 실수로 연락처를 삭제하거나 전화를 걸 걱정을 하지 않아도 됩니다. VoiceOver는 사용자 인터페이스에서, 사용자 인터페이스의 위치, 사용자가 취할 수 있는 작업 및 이러한 작업의 결과를 알려주기 때문입니다.

사용자가 상호 작용 할 수 있는 모든 사용자 인터페이스 요소에 접근 할 수 있는 경우, 앱에 접근 할 수 있습니다. 사용자 인터페이스 요소는 접근 가능성 요소로 자신을 올바르게 보고(report) 할 때 접근 할 수 있습니다. 

그러나 유용하려면, 접근 가능한 사용자 인터페이스 요소가 화면 위치, 이름, 동작, 값 및 타입에 대한 정확하고 유용한 정보를 제공해야 합니다. 이것은 VoiceOver가 사용자에게 말하는 정보입니다. iOS SDK에는 프로그래밍 인터페이스와 도구가 포함되어 있어 앱의 사용자 인터페이스 요소에 접근하고 유용하게 사용 할 수 있습니다.

Why You Should Make Your App Accessible

다음과 같은 이유로, VoiceOver사용자가 iPhone앱에 접근할 수 있도록 해야합니다.

● 사용자 기반이 증가합니다. 훌륭한 앱을 만들기 위해 당신은 열심히 노력했습니다. 더 많은 사용자가 사용 할 수 있는 기회를 놓치지 마세요.

● 사람들이 화면을 보지 않고도 앱을 사용할 수 있습니다. 시각장애가 있는 사용자는 VoiceOver를 사용하여 앱을 사용 할 수 있습니다.

● 접근성 지침을 다루는데 도움이 됩니다. 다양한 관리 기관이 접근성을 위한 지침을 작성하고, VoiceOver사용자가 iPhone 앱에 접근할 수 있도록 하여 만날 수 있습니다.

그것은 옳은 일입니다.(It's the right thing to do.)



 접근성을 지원한다고 해서 아름다운 iPhone 앱을 혁신하고, 만들 수 있는 능력에는 영향을 미치지 않습니다. UI 접근성 프로그래밍 인터페이스를 사용하면, 앱의 모양을 변경하지 않거나 메인 로직을 방해하지 않는 기능을 추가할 수 있습니다.


iOS Accessibility API and Tools

iOS 3.0이상에는 UI 접근성 프로그래밍 인터페이스가 포함되어있습니다. 이 API는 VoiceOver가 사용자 인터페이스를 설명하고, 시각장애가 있는 사람들이 앱을 사용하는데 필요한 모든 정보를 앱이 제공하도록 도와주는 경량의 API입니다.

UI 접근성 프로그래밍 인터페이스는 UIKit의 일부이며, 기본적으로 표준 UIKit컨트롤과 View에 구현됩니다. 
즉, 표준 컨트롤과 View를 사용하면, 앱에 접근 할 수 있도록 하는 많은 작업이 수행됩니다. 앱의 사용자 지정 수준에 따라 접근 가능한 사용자 인터페이스 요소에 대한 정확하고 유용한 설명을 제공하는 것만큼 간단하게 접근 할 수 있습니다.

iOS SDK에는 앱을 접근 할 수 있게 해주는 도구가 있습니다.
접근상nib파일을 디자인 할 때, 설명(descriptive) 접근성 정보를 표시하면 iOS시뮬레이터에 애플리케이션을 실행할 때, 이 정보를 확인 할 수 있도록 합니다. 
앱의 접근성 정보를 확인하는 방법은, 접근성 검사 기능을 사용하여 OS Simulator의 접근성 디버그를 참조하세요. 또한 VoiceOver 자체를 사용하여 응용 프로그램의 접근 가능성을 테스트 할 수 있습니다.
VoiceOver로 응용 프로그램을 테스트하는 방법을 배우려면 VoiceOver로 장치의 접근성 테스트를 참조하세요.

The UI Accessibility Programming Interface

UI접근성 프로그래밍 인터페이스는 두가지 비공식 프로토콜, 하나의 클래스, 함수 및 몇가지 상수로 구성됩니다.
● UIAccessibility 비공식 프로토콜. UIAccessibility을 구현하는 객체는 접근 가능성 상태(접근 가능 여부)를 보고하고, 자신에 대한 설명 정보를 제공합니다. 
표준 UIKit컨트롤 및 View는 기본적으로 UIAccessibility프로토콜을 구현합니다. 
● UIAccessibilityContainer 비공식 프로토콜. 이 프로토콜은 UIView의 하위 클래스가 포함하고 있는 일부 또는 모든 객체를 개별 요소로 접근 할 수 있게 합니다. 이러한 View에 포함된 객체 자체가 UIView의 하위클래스가 아니며, 이러한 이유로 자동으로 접근 할 수 없는 경우 특히 유용합니다.
● UIAccessibilityElement 클래스. 이 클래스는 UIAccessibilityContainer 프로토콜을 통해 반환 될 수있는 객체를 정의합니다. UIAccessibilityElement의 인스턴스를 만들어 UIView를 상속하지 않는 객체 또는 존재하지 않는 객체와 같이 자동으로 접근 할 수없는 항목을 나타낼 수 있습니다.
● UIAccessibilityConstants.h 헤더 파일. 이 헤더파일은 접근성 요소가 나타낼 수 있는 특성과 앱에서 게시 할 수 있는 알림을 설명하는 상수를 정의합니다.

Accessibility Attributes


접근 가능한 사용자 인터페이스 요소를 설명하는 속성은, UI 접근 가능성 API의 핵심을 구성합니다.
VoiceOver는 사용자가 컨트롤이나 View에 접근하거나 상호작용 할 때 속성 정보를 사용자에게 제공합니다.

속성은 또한 가장 많이 사용하는 프로그래밍 인터페이스의 구성 요소입니다. 속성은 하나의 컨트롤이나 View를 다른 것으로 구별하는 정보를 캡슐화하기 때문입니다. 표준 UIKit컨트롤 및 View의 경우, 기본 속성 정보가 앱에 적합한지 확인해야 할 수 있습니다. 사용자 지정 컨트롤 및 View의 경우, 대부분의 속성 정보를 제공해야 할 수 있습니다.

UI 접근 가능성 프로그래밍 인터페이스는 다음과 같은 속성을 제공합니다.(잘보세요!!!)
Label. 컨트롤 또는 View를 간결하게 설명하지만, 요소의 타입을 식별하지 않는 짧은 로컬라이징 된 단어 또는 구 입니다.. 예는 '추가' 또는 '재생'입니다. 

Traits. 동작 또는 사용법의 단일 측면을 설명하는 하나 이상의 개별 속성의 조합입니다. <- 이해가 잘 안가시죠.. 저도 엥... Traits이 도대체 무슨일을 하는거여..했는데 예를 보시면 바로 이해가 갑니다. 그냥 행동을 설명한다고 생각하시면 됩니다. ex. 이미지가 사파리링크와 연결되어 있다면, 이건 이미지와 링크 Traits의 "조합"인거죠. 방금 위에서 Traits의 정의를 보시면 "동작 또는 사용법의 단일 측면을 설명하는 하나 이상의 개별 속성의 조합입니다."라고 그랬죠? 이게 이 의미인거에요. 또다른 예는 "버튼을 누르면 음악이 재생됩니다"가 있겠네요 :)

Hint. 요소에 대한 작업 결과를 설명하는 간단한 로컬라이징 된 구문입니다. ex. "제목추가" 또는 "쇼핑 목록 열기"

Frame. 요소의 화면 위치와 크기를 지정하는 CGRect구조체에 의해 주어진 화면 좌표의 요소 프레임입니다.

Value. 값이 Label로 표시되지 않은 경우, 요소의 현재 값입니다. ex. 슬라이더의 Label은 "속도"일 수 있지만, 현재 값은 "50%"일 수 있습니다.

접근성 요소는 기본적으로 또는 사용자가 제공한 것과 상관없이, 속성에 대한 내용을 제공합니다.
접근성 요소는 항상 Frame 및 Label속성에 대한 내용을 제공합니다. 
접근성 요소는 항상 사용자 인터페이스에서 위치를 보고 할 수 있어야 하므로, Frame속성이 필요합니다. UIView에서 상속받은 객체에는 기본적으로 frame속성이 포함됩니다, Label속성에는 VoiceOver에서 사용하는 접근 가능성 요소의 이름이나 설명이 포함되어 있으므로 필수입니다.

이 속성이 요소에 적용되지 않는 경우, 접근 가능성 요소는 Hint 및 Traits속성에 대한 내용을 제공 할 필요가 없습니다. 예를들어, 동작을 수행하지 않는 요소는 Hint를 제공할 필요가 없습니다.

accessibility요소는 요소의 내용이 변경 가능하고 Label에 의해 항상 설명될 수 없는 경우에만 Value속성에 대한 정보를 제공합니다. 예를들어, 전자메일 주소가 포함된 텍스트 필드는 "전자메일주소"라는 Label을 가질 수 있지만, 내용은 사용자 입력에 따라 달라지며, 일반적으로 "username @ address"형식입니다.



참..옛날 아이폰스럽지만.....위 그림은 VoiceOver가 말할 수 있는 정보들이에요. 그림을 잘 보시면, Hint가 있는 요소들이 있죠? 보시면 Hint가 이런일을 하는구나..라고 이해가 가실거에요.


VoiceOver사용자는 자신의 앱 사용을 돕기 위해 Label과 Hint에 의존합니다. 이러한 이유로 앱의 접근 가능한 인터페이스 요소가 정확하고 유익한 설명을 제공하는지 확인하는 것이 특히 중요합니다. 표준 UIKit컨트롤 및 VIew의 경우, 기본 속성 정보가 적절한 경우가 많지만, 이러한 요소를 검사하여 확인해야 합니다. 사용자 지정 컨트롤 및 View의 경우, 정보 중 일부 또는 정부를 직접 제공해야 할 수 있습니다. 이 작업을 수행하는 방법에 대한 지침은 유용한 Label 제작 및 Hint를 참조하세요. 



Making Your iOS App Accessible

접근 가능하려면, iPhone 앱이 VoiceOver 사용자에게 사용자 인터페이스 요소에 대한 정보를 제공해야합니다. 높은 수준에서 이것은 다음 사항을 확인해야 함을 의미합니다.

● 사용자가 상호 작용 할 수 있는 모든 사용자 인터페이스 요소에 접근 할 수 있습니다. 여기에는 정적 텍스트와 같은 정보를 제공하는 요소는 물론, 작업을 수행하는 컨트롤도 포함됩니다.

● 모든 접근 가능한 요소는 정확하고 유용한 정보를 제공합니다.

이러한 기본 사항 외에도, VoiceOver사용자가 TableView를 사용하는 것을 향상시키고, 앱의 동적 요소에 항상 접근 할 수있도록 하는 몇가지 방법이 있습니다.


(왜이렇게 위에서 부터 똑같은 이야기만 반복하는 것 같지..?..........ㅎㅎ..)


Make User Interface Elements Accessible

Accessibility and VoiceOver에서 언급했듯이(위에 있습니다.) 사용자 인터페이스 요소는 접근성 요소로 보고되면, 접근 할 수 있습니다. 비록 사용자 인터페이스 요소가 VoiceOver 사용자에게 유용 할만큼 접근하기에는 충분하지 않지만, 이는 앱을 접근 가능하게 만드는 첫 번째 단계를 나타냅니다.


iOS Accessibility API and Tools에 명시된 바와 같이(위에 있습니다.) 표준 UIKit컨트롤 및 View는 자동으로 접근 할 수 있습니다. 

표준 UIKit컨트롤만 사용하는 경우, 앱에 접근 할 수 있도록 많은 추가 작업을 수행할 필요가 없을 것입니다. 이 경우, 다음 단계는 컨트롤에서 제공하는 기본 속성 정보가 앱에서 의미가 있는지 확인하는것입ㄴ디ㅏ. 이 작업을 수행하는 방법은 정확하고 유용한 속성 정보 제공을 참조하세요.


정보를 표시하거나 사용자가 상호 작용해야하는 사용자 지정 View를 만드는 경우, 이러한 View에 대한 접근 가능성을 직접 확인해야 합니다. 이 작업을 수행 한 후에는 이러한 View가 사람들이 사용 할 수 있도록 접근 가능성 정보를 제공해야 합니다.


내가 필요한 옵션 관점에서 보면, 사용자 정의 View는 개인(individual) View 또는 컨테이너 View중 하나입니다.

individual View에는 접근이 필요한 다른 View가 없습다. 예를들어, 아이콘을 표시하고 버튼처럼 동작하는 UIContorl의 사용자 정의 하위 클래스에는 버튼 자체와 별도로 사용자가 상호 작용 할 수 있는 다른 요소가 없습니다. individual View를 접근 가능하게 만드는 방법을 배우려면 "individual View 개별 설정을 접근 가능하게 설정하세요"를 읽으세요.


반면 컨테이너 View에는 사용자가 상호 작용할 수 있는 다른 요소가 포함되어 있습니다. 예를들어, 기하학적 모양의 그리기를 수행하는 UIView의 사용자 정의 하위 클래스에서, shapes은 사용자가 상호 작용 할 수 있는 요소를 나타내며, 컨테이너 View와 구별됩니다.

컨테이너 View내의 이러한 개별 요소는 UIView의 하위 클래스가 아니기 때문에 자동으로 접근 할 수 없으며 접근 가능성 정보를 제공하지 않습니다. 컨테이너 View의 내용을 접근 가능하게 만드는 방법을 배우려면 "사용자 정의 컨테이너 View의 내용에 접근 가능 할 수 있게 만들기"를 읽으세요.


위에서 ~를 참조하세요, ~를 읽으세요한 링크는 다...나올겁니다. 전부 Accessibility Programming Guide for iOS안에 있는 내용이에요 :)

일단 이게 챕터1..?의 내용입니다. 챕터2는 따로 글 쓸게요 :) 하기전에 공부를 좀 해야할 것 같아서 ㅎㅎㅎ

접근성을 공부하시는데 도움이 꼭 되었으면 좋겠어요!!!!!!!! 꼭 절대 그냥 지나칠일이 아니라는 것도, "세상에서 가장 강력한 테크놀로지란 곧 모든 사람이 사용할 수 있는 테크놀로지를 의미합니다."라는 것도 꼭!! 명심하셨으면 좋겠어요. 






반응형