diff --git a/README.md b/README.md index 5802c22..a783ae8 100644 --- a/README.md +++ b/README.md @@ -2,20 +2,20 @@ ## — What is this? -This repository is the source code of [**iOS Accessibility Handbook**](https://vodgroup.github.io/AccessibilityDocumentation/documentation/iosaccessibilityhandbook) website, which is an educational resource dedicated to help developers, designers, testers and researchers work on [approachability](https://developer.apple.com/design/human-interface-guidelines/accessibility) of iOS applications. +This repository is the source code of [**iOS Accessibility Handbook**](https://vodgroup.github.io/AccessibilityDocumentation/documentation/iosaccessibilityhandbook) online documentation, which is an **educational resource** dedicated to help **developers**, **designers**, **testers** and **researchers** work on [**approachability**](https://developer.apple.com/design/human-interface-guidelines/accessibility) of iOS applications. -The book is a collection of **interactive guides** and **thorough articles** permeated with *lots* of **exemplary illustrations** that cover everything one could ever need to know about implementing accessibility. +The book is a collection of **interactive guides** and **detailed articles** permeated with *lots* of **exemplary illustrations** that cover everything one could ever need to know about **implementing accessibility**. Screenshot 2024-01-27 at 11 38 37 (2) -The material is split into **Chapters** by its relation to a certain topic. The Chapters are joined into **Volumes** by the depth of the knowledge inside. So everyone can find something interesting for themselves *regardless* of their level of expertise. +The material is split into **chapters** by its relation to a *certain topic*. The chapters are joined into **volumes** by the *depth of the knowledge* inside. This way everyone can find something useful for themselves *regardless* of their level of expertise. -## — Who writes this? +## — Who is responsible of this? Majorly the project is based on the content of [**About Accessibility on iOS**](https://rubanov.dev/a11y-book) book written by [**Mikhail Rubanov**](https://github.com/akaDuality). ![prs](./Samples/aboutAccessibility~dark.png#gh-dark-mode-only) ![prs](./Samples/aboutAccessibility~light.png#gh-light-mode-only) -The book is essentially a **complete course** on accessibility of iOS applications, but being a traditional book — moreover available in Russian language exclusively — sucks. So here we are, happily putting videos and samples of code on the pages! Have fun. +The book is essentially a **complete course** on accessibility of iOS applications, but being a traditional book — moreover available in Russian language *exclusively* — sucks. So here we are, happily putting **videos** and **code samples** on the documentation pages! Have fun. ## — Why make it a website? *Websites* is an exemplary **cross-platform solution**. Having resources available on the Net widens its **availability** — one has to have nothing more than a web browser and an Internet connection to **access the resource**. @@ -38,7 +38,7 @@ Yes, **everyone is welcome to influence the project**, especially considering it ![prs](./Samples/prs~dark.png#gh-dark-mode-only) ![prs](./Samples/prs~light.png#gh-light-mode-only) -- **get in contact with one of the [responsible contributors](https://github.com/VODGroup/AccessibilityDocumentation/graphs/contributors)** by using the *credential information* they've provided. +- **get in contact with one of the [responsible editors](https://github.com/VODGroup/AccessibilityDocumentation/graphs/contributors)** by using the *credential information* they've provided. ![contributors](./Samples/contributors~dark.png#gh-dark-mode-only) ![contributors](./Samples/contributors~light.png#gh-light-mode-only) diff --git a/Sources/iOSAccessibilityHandbook/iOSAccessibilityHandbook.docc/Pages/Adaption/AdoptionGuide.tutorial b/Sources/iOSAccessibilityHandbook/iOSAccessibilityHandbook.docc/Pages/Adaption/AdoptionGuide.tutorial index 6e7835c..76e5512 100644 --- a/Sources/iOSAccessibilityHandbook/iOSAccessibilityHandbook.docc/Pages/Adaption/AdoptionGuide.tutorial +++ b/Sources/iOSAccessibilityHandbook/iOSAccessibilityHandbook.docc/Pages/Adaption/AdoptionGuide.tutorial @@ -15,14 +15,14 @@ @Volume(name: "Integrating interfaces with accessibility") { - This volume covers the **tasks crucial for implementation**: unsolved issues from the inner chapters *exclude* users of [**assistive technology**](). + This volume covers the **tasks crucial for implementation**: unsolved issues discussed here *exclude* users of [**assistive technology**](). @Image(source: placeholder-image.png, alt: "") @Chapter(name: "Expose interfacial data") { @Image(source: chapter-placeholder.png, alt: "") - First of all, every functional element of the interface has to be sufficiently *described*. + First of all, every **functional element** of the interface has to be sufficiently *described*. @TutorialReference(tutorial: "doc:AccessibleUI") @TutorialReference(tutorial: "doc:AccessibilityAttributes") @@ -34,7 +34,7 @@ @Chapter(name: "Ensure that navigation is possible") { @Image(source: chapter-placeholder.png, alt: "") - Secondly, to reconnect the elements into a integral interface certain alternative controlling options have to be enabled. + Secondly, to *reconnect* the elements into a integral interface certain **alternative controlling options** have to be enabled. @TutorialReference(tutorial: "doc:OnScreen-Navigation") @TutorialReference(tutorial: "doc:FocusManagement") @@ -44,7 +44,7 @@ @Chapter(name: "Secure user scenarios") { @Image(source: chapter-placeholder.png, alt: "") - Lastly, to make sure that the users of assistive technology are able to complete the tasks they are supposed to achieve review the layout of the accessible interface. + Lastly, to make sure that the users of assistive technology are able to complete the tasks they are *supposed* to achieve we have to **review the layout** of the accessible interface. @TutorialReference(tutorial: "doc:ControlHierarchy") @TutorialReference(tutorial: "doc:Containers") @@ -54,7 +54,7 @@ @Volume(name: "Providing accessible experience") { - This volume is dedicated to making the *experience* of [**Accessibility Features**]() users more **comfortable** and **immersive** -- just as it as for regular users. + This volume is dedicated to making the *experience* of [**assistive technology**]() users more **comfortable** and **immersive** -- just as it is for "regular" users. @Image(source: placeholder-image.png, alt: "") @@ -101,7 +101,7 @@ @Volume(name: "Extend on enterprise processes") { - This volume provides additional insights on the topic of accessibility and its integration at various stages of the product's **life cycle**. + This volume provides **additional insights** on the topic of accessibility and its integration at various stages of the **product's life cycle**. @Chapter(name: "Design") { @Image(source: chapter-placeholder.png, alt: "") diff --git a/Sources/iOSAccessibilityHandbook/iOSAccessibilityHandbook.docc/Pages/Introduction/AccessibilityFeatures/AccessibilityFeatures.md b/Sources/iOSAccessibilityHandbook/iOSAccessibilityHandbook.docc/Pages/Introduction/AccessibilityFeatures/AccessibilityFeatures.md index e63fe64..5ea1842 100644 --- a/Sources/iOSAccessibilityHandbook/iOSAccessibilityHandbook.docc/Pages/Introduction/AccessibilityFeatures/AccessibilityFeatures.md +++ b/Sources/iOSAccessibilityHandbook/iOSAccessibilityHandbook.docc/Pages/Introduction/AccessibilityFeatures/AccessibilityFeatures.md @@ -1,10 +1,10 @@ # Accessibility Features -A brief overview of **Accessibility Features** available on iOS +A brief overview of assistive technology supported by iOS @Metadata { @PageColor(blue) - @TitleHeading("iOS Assistive Technology Stack") + @TitleHeading("iOS Accessibility Kit") @PageImage( purpose: icon, source: "accessibility", @@ -19,12 +19,12 @@ A brief overview of **Accessibility Features** available on iOS label: "General Knowledge") } -## What is Accessibility Features? +## -- What is Accessibility Features? **Accessibility Features** is a collection of *software* aimed to **help people use the device**. @Row { @Column { - @Image(source: settings-af, alt: "") { + @Image(source: settings-af, alt: "Accessibility can be found in Settings") { } } @Column { @@ -37,13 +37,13 @@ A brief overview of **Accessibility Features** available on iOS } } -### Accessibility Features Are a Form of Assistive Technology -**Accessibility Features** are programmed to **personalise user experience** by adjusting the operation system's behaviour to meet users' needs and enable them to use the given device using *external* assistive technology if required. +### Assistive technology +**Accessibility Features** are programmed to **personalise user experience** by adjusting the operation system's behaviour to **meet users' needs** and **enable them to use the given device** using *external* assistive technology if required. @Image(source: placeholder-image, alt: "") -### Assistive Technology Helps People with Disabilities +### People with disabilities **Assistive technology** is a term that defines software, hardware and combined solutions to make life of **people with disabilities** easier. Every **Accessibility Feature** is an **assistive technology** on its own, but some features are purposed to **support external assistive technology** devices which provide alternative *input* and *output* interfaces for the system. @Image(source: placeholder-image, alt: "") @@ -52,18 +52,18 @@ For example, **control devices** such as **switches** and **keyboards**, **heari @Image(source: placeholder-image, alt: "") -### iOS Is Accessible from the Start +### Native accessibility of iOS Nevertheless, most of the features that *enhance* approachability of the system do not require anything extrinsic and work **out of the box**. Excluding the possibly needed external devices, *native* accessibility functionality of the iOS devices covers a wide range of needs of users with disabilities. @Image(source: placeholder-image, alt: "") -## Accessibility Features on iOS +## Accessibility Features Here is the list of **Accessibility Features** available on iOS. -@Image(source: features-list, alt: "") +@Image(source: features-list, alt: "A large text Keynote slide listing Accessibility Features: Dynamic Type, VoiceOver, Zoom, Spoken Content features, Reduce Transparency, Switch Control, Reduce Motion, On and Off labels, AssistiveTouch, Full keyboard access, Voice Control, Bold Text, Pointer Control, Sound Recognition, Guided Access, Dwel Control, Type to Siri, Sound Actions, Button Shapes, Color Filters, Increase Contrast, Hearing Aids") -In this book we're not going to take a precise look at each of them separately, but there are features that have to be thoroughly researched to understand the **accessibility of iOS** in general. +Though in this book we're not going to take a precise look at each of them separately, but only at the features that have to be **implicitly supported** to *function*. @Links(visualStyle: detailedGrid) { - @@ -80,27 +80,23 @@ Each article above contains an overview of a feature that explains **what this f @Image(source: placeholder-image, alt: "") -## Supporting Accessibility Features in Your App +## Adopting Accessibility Features -[**Accessibility Features**]() use the **semantic language** of an application and change some of its *interfacial* properties to alternate the **usability** of its interface. To see how accessibility is integrated to interfaces proceed to [**Accessible Interface**]() -- the heading article of **Adapting Interfaces** volume, which is purposed to break down the **accessibility adoption** process. +[**Accessibility Features**]() use the **semantic language** of an application and change some of its *interfacial* properties to alternate the **usability** of its interface. To see how accessibility is integrated to interfaces proceed to [**Accessible Interface**]() -- the heading article of **Adapting Interfaces** volume, which is purposed to break down the **accessibility adoption** process. @Links(visualStyle: detailedGrid) { - - + - } -@Image(source: placeholder-image, alt: "") - -Supporting a particular feature usually fully or partially enables *other* features to be used in the app, but it is important to understand the meaning of specific **accessibility attributes** of **mobile interfaces** to provide the *equal experience*. To know how *user experience* changes with various [**Accessibility Features**]() used visit the [**Accessible Experience**]() page, which is a heading article of the detailed volume dedicated to **polishing accessible experience**. +Supporting a particular feature usually fully or partially enables *other* features to be used in the app, but it is important to understand the meaning of specific **accessibility attributes** of **mobile interfaces** to provide the *equal experience*. To know how *user experience* changes with various [**Accessibility Features**]() used visit the [**Accessible Experience**]() page, which is a heading article of the detailed volume dedicated to **polishing accessible experience**. @Links(visualStyle: detailedGrid) { - - + - } -@Image(source: placeholder-image, alt: "") - ## Have fun! -## Additional Resources +## Resources ### Apple Accessibility Support Web Page https://support.apple.com/accessibility diff --git a/Sources/iOSAccessibilityHandbook/iOSAccessibilityHandbook.docc/Pages/Introduction/AccessibilityFeatures/AssistiveAccess/AssistiveAccess.md b/Sources/iOSAccessibilityHandbook/iOSAccessibilityHandbook.docc/Pages/Introduction/AccessibilityFeatures/AssistiveAccess/AssistiveAccess.md index e90eb04..992449f 100644 --- a/Sources/iOSAccessibilityHandbook/iOSAccessibilityHandbook.docc/Pages/Introduction/AccessibilityFeatures/AssistiveAccess/AssistiveAccess.md +++ b/Sources/iOSAccessibilityHandbook/iOSAccessibilityHandbook.docc/Pages/Introduction/AccessibilityFeatures/AssistiveAccess/AssistiveAccess.md @@ -27,7 +27,7 @@ A simplified mode of iOS The feature is purposed to provide a drastically **simplified UI of the whole system** with help of [**Dynamic Type**]() and fundamentally different layouts of **adapted apps** to lighten *cognitive load* for those in need. -@Image(source: aa-promo-1, alt: "") +@Image(source: aa-promo-1, alt: "Promotional screenshots of Assistive Access presenting the simplified interfaces of Music, Photos and Camera") ------------------------------------------------------ @@ -37,7 +37,7 @@ The feature is dedicated to enable anyone use their device **independently** reg The technology's task is to **reduce applications functionality** to the point when the possibility that everyone can find app's interface understandable is *maximal*. -@Image(source: aa-promo-2, alt: "") +@Image(source: aa-promo-2, alt: "Other promotional screenshots of Assistive Access presenting the simplified interfaces of Home Screen, Calls and Messages") So people who have **cognitive** or **learning impairments** could easily use iPhones *on their own*. @@ -80,13 +80,15 @@ To learn more about *reasons* behind these guidelines visit our articles on the ------------------------------------------------------ -## How to adapt your app +## How to integrate it in your app -@Image(source: aa-adapted, alt: "") +@Image(source: aa-adapted, alt: "Promotional screenshots of an unknown application supporting Assistive Access") As for today **Assistive Access** is more of a prototype than a real feature: **there is no comprehensible guidelines (and options at all) of how to *adapt* applications**. -@Image(source: aa-support, alt: "") +@Image(source: aa-support, alt: "A screenshot of one of the Assistive Access code properties documentation") { + This is not a lie, but is useless. +} @Comment { https://x.com/akaDuality/status/1722764671806038319?s=20 @@ -100,5 +102,14 @@ Moreover, at the moment there are only **Messages**, **Calls**, **Music**, **Pho Nevertheless, if **Apple** *decides* that they should invest their resources into proper development of the feature this page is going to turn into a complete guide of how to adapt applications for **Assistive Access**. As for now... -@Image(source: tbc, alt: "") - +@Image(source: tbc, alt: "A large text Keynote slide saying \"... to be continued?\"") + +## See Also +- +- +- +- +- +- +- +- diff --git a/Sources/iOSAccessibilityHandbook/iOSAccessibilityHandbook.docc/Pages/Introduction/AccessibilityFeatures/VoiceOver/VoiceOver.md b/Sources/iOSAccessibilityHandbook/iOSAccessibilityHandbook.docc/Pages/Introduction/AccessibilityFeatures/VoiceOver/VoiceOver.md index eebdfbf..c5b6729 100644 --- a/Sources/iOSAccessibilityHandbook/iOSAccessibilityHandbook.docc/Pages/Introduction/AccessibilityFeatures/VoiceOver/VoiceOver.md +++ b/Sources/iOSAccessibilityHandbook/iOSAccessibilityHandbook.docc/Pages/Introduction/AccessibilityFeatures/VoiceOver/VoiceOver.md @@ -8,7 +8,7 @@ A **screen reader** native for iOS @Metadata { @PageColor(blue) - @TitleHeading("A Screen Reader") + @TitleHeading("The Screen Reader") @PageImage( purpose: icon, source: "voiceover", @@ -24,32 +24,33 @@ A **screen reader** native for iOS } -## Screen-Reading Technology +## Screen-reading technology -A screen reader is a form of [**assistive technology**]() — a program that conveys *visual* content into *non-visual* output. It allows people who cannot *visually* perceive information from the screen to be able to receive it in **audial** or **tactile** forms. +A **screen reader** is a form of [**assistive technology**]() — a program that conveys *visual* content into *non-visual* output. It allows people who cannot *visually* perceive information from the screen to be able to receive it in **audial** or **tactile** forms. -@Video(source: voiceover-commercial, alt: "") { +@Video(source: voiceover-commercial, alt: "Only visual content of this video is captions") { Apple's VoiceOver commercial video } ### Application -Screen readers are essential for users who... +Screen readers are **essential** for users who... 1) have *visual disablements*, such as **blindness** or **poor eyesight**; 2) experience **dyslexia** or other *cognitive impairments*; 3) are simply in a *situation* that disables them from looking at the screen, such as driving. -In other words, screen reading technology serves people who are *unable* to **visually** perceive information displayed on the screen. +In other words, screen reading technology *primarily* serves people who are *unable* to **visually** perceive information displayed on the screen. @Image(source: blind-surfer, alt: "") { Longboard surfer Scott Leason reviews surf reports using the Surfline app on his iPhone } ### Implementation -Not being able to perceive information **visually** is the hugest obstacle on the way to the access to technology. The reason is that approximately 90% of the environmental information received by humans comes through the **visual channel**. Which makes the visual perception the primary way of **reality perception**. +Not being able to perceive information **visually** is the hugest obstacle on the way to the access to technology. The reason is that **approximately 90% of the environmental information** received by humans comes through the **visual channel**. Which makes the visual perception the primary way of **reality perception**. @Image(source: ninety-percent, alt: "") +### Featured @Links(visualStyle: detailedGrid) { - - @@ -59,53 +60,97 @@ Thanks to the natural order of things **information is formless** and humans hav @Row { @Column { - @Image(source: "speech-output", alt: "") { + @Image(source: "speech-output", alt: "A photo of a person in headphones connected to a laptop") { **Audial form** comes in **synthesised speech** or **sound icons** } } @Column { - @Image(source: "braille-output", alt: "") { + @Image(source: "braille-output", alt: "A photo of a person using Braille display") { **Tactile form** comes in **braille script** or **haptic feedback** } } } ### VoiceOver enables alternative control -Visual impairments do not only disable the ability to perceive information but affect the control of things that are distinguishable solely *visually*. For a person who struggles to see it results in being unable to operate touch screens. People with visual impairment don't see controls, people with cognitive impairments that affect the visual perception don't recognise them. So there must be a way to access the interface without visual navigation. +Visual impairments do not only *disable* the ability to perceive information but affect the **control** of things that are distinguishable solely *visually*. For a person who struggles to see it results in being **unable to operate touch screens**. + +People with visual impairment don't see controls, people with cognitive impairments that affect the visual perception don't recognise them. So there must be a way to access the interface **without visual navigation**. @Image(source: service-dog, alt: "") { Longboard surfer Scott Leason and his seeing dog wait for the ride } -Talking about using screen readers on *mobile* devices it brings different controls in. Navigating an interface with a screen reader on requires usage of **special gestures** on touchscreen or an external controllers of non-direct touch. +Talking about using screen readers on *mobile* devices it brings different controls in. Navigating an interface with a screen reader on requires usage of **special gestures** on touchscreen or **external controllers** of non-direct touch. + +### Indirect selection +Regardless of the control method they both exploit a particular technology of **indirect selection**. Indirect selection is a way of interacting with interfacial elements implemented by **iterating through the elements *before* item selection**. + +This selection is opposite to the **direct selection**, during which the iteration doesn't *explicitly* happen: users can just select something they see. + +### Featured +@Links(visualStyle: detailedGrid) { + - +} ## VoiceOver Gestures -@Image(source: voiceover-gestures, alt: "") -In the case of VoiceOver there is [**a list of standard VoiceOver gestures**](https://support.apple.com/en-gb/guide/iphone/iph3e2e2281/ios). Default controlling can be expanded with the use of [**Rotor**]() and [**Custom Actions**](). +@Image(source: voiceover-gestures, alt: "Some of VoiceOver gestures: Item selection, Activate the selected item, Rotor gestures, Scroll down, Dismiss or return, Magic Tap, To the first element, To the last element, Speak the entire screen from the top or the selected item, Mute or unmute VoiceOver, Turn off the screen, Navigate by touch") +In the case of **VoiceOver** there is [**a list of standard VoiceOver gestures**](https://support.apple.com/en-gb/guide/iphone/iph3e2e2281/ios). Default **controlling options** can be expanded with the use of [**Rotor**]() and [**Custom Actions**](). + +### Navigate by touch +**VoiceOver** provides an option of **unordered iteration through the elements** on the screen: **navigate by touch**. + +Basically it requires a person to **move a finger on the surface of the screen** to hear about the element *under their fingertip*. -If the user uses VoiceOver combined with the use of an external physical keyboard the screen readers provide full control of the interface by using the keyboard. To learn more about using a keyboard instead of a touchscreen to operate the phone and its own nuances see article. +To **select the focused item** it is possible to perform a double tap **without taking the "gliding" finger off**, so this controlling option may be *really helpful* in cases like **keyboard operation**. + +### Keyboard access +If a person uses **VoiceOver** *combined* with the use of an **external physical keyboard** the screen readers provide full control of the interface by using the keyboard. To learn more about **using a keyboard instead of a touchscreen** to operate the phone and its own nuances see article. +### Featured +@Links(visualStyle: detailedGrid) { + - +} ## VoiceOver on other Apple devices + +**VoiceOver** as Apple's **screen reader** was introduced in 2009, for macOS. This event **opened the doors for customers with visual impairments**. + @Image(source: blind-evangelist, alt: "") { Dean Hudson, Apple's accessibility technical evangelist uses VoiceOver } -VoiceOver as Apple's variant of screen reader was introduced in 2009 for macOS. It was a huge success and didn't take much time for iPod Shuffle to support this feature. VoiceOver on iOS has been supported since iPhone 3GS release. To learn more about the accessibility of iOS visit article. + +It didn't take much time for **iPod Shuffle** to support this feature. **VoiceOver** on iOS has been supported since **iPhone 3GS** release. To learn more about the accessibility of iOS visit article. @Image(source: steve, alt: "") { - Steve Jobs presents iPhone 3GS, the first iPhone with VoiceOver support + **Steve Jobs** presents **iPhone 3GS, the *first* iPhone with VoiceOver support** } -## Setting Up VoiceOver +## Turning VoiceOver on +To turn the screen reader on your iOS device go to **Settings** and find **VoiceOver** in the **Accessibility** category. @Image(source: vo-setup, alt: "") +> Tip: In case you're unfamiliar with the gestures, put this feature into **Accessibility Shortcut** to have easier time *disabling* **VoiceOver**. -## Additional resources -@Image(source: vo-resources-1, alt: "") { - [Apple, creatives, and disability rights activists reflect on 30 years of the Americans with Disabilities Act](https://www.apple.com/newsroom/2020/07/apple-creatives-and-disability-rights-activists-reflect-on-30-years-of-the-americans-with-disabilities-act/) -} +## Supporting VoiceOver in your app +To enable people use your application with the screen reader on you have to *adapt* the interface for a **one-dimensional (spoken by VoiceOver) view**. -@Image(source: vo-resources-2, alt: "") { - [Blind veteran catches second wave with a surfboard and iPhone](https://www.apple.com/newsroom/2018/11/blind-veteran-catches-second-wave-with-a-surfboard-and-iphone/) +The job will include **describing the interface**, **reinforcing the connection between its elements**, **ensuring that the application itself is perceived properly and doesn't cause any further inconvenience for the user**. + +Sounds like a tough job. But everything needed to be done to **enable people with the screen reader on** use your app is explained in [**iOS Accessibility Guide Tutorials**]() in great detail. +@Links(visualStyle: list) { + - } -### A blind person checks whether the document is accessible - [![Alternate Text](screen-reader)](https://www.youtube.com/watch?v=5kejy1z8x3I) +### Good (?) news +Since supporting screen readers heavily relies on the **semantic structure** of interfaces... If you adopt **VoiceOver**, you *also* enable many other [**Accessibility Features**](). Not to the full extent, but the job will do. + +>Warning: It DOES NOT mean that you won't have to make sure that everything else works as intended. It just covers **some** of other features' needs. + + +## See Also +- +- +- +- +- +- +- +- diff --git a/Sources/iOSAccessibilityHandbook/iOSAccessibilityHandbook.docc/Pages/Introduction/iOSAccessibility.md b/Sources/iOSAccessibilityHandbook/iOSAccessibilityHandbook.docc/Pages/Introduction/iOSAccessibility.md index 44f2157..3fed525 100644 --- a/Sources/iOSAccessibilityHandbook/iOSAccessibilityHandbook.docc/Pages/Introduction/iOSAccessibility.md +++ b/Sources/iOSAccessibilityHandbook/iOSAccessibilityHandbook.docc/Pages/Introduction/iOSAccessibility.md @@ -1,6 +1,6 @@ # iOS Accessibility -An introduction to Accessibility on iOS +An introduction to accessibility on iOS @Metadata { @PageColor(blue) @@ -20,30 +20,34 @@ An introduction to Accessibility on iOS } ## What does it mean for something to be accessible? -Accessibility is a *property* of products (e.g. devices, services, concepts, environments) that measures **approachability** — the widest possible range of people who can use it. +**Accessibility** is a *property* of products (e.g. devices, services, concepts, environments) that measures **approachability** — the widest possible range of people who can use it. Every person has their own *preferences* and *capabilities*, therefore it is required to consider the *diversity* of products' audience if there is a wish to extend the **reach**. -@Image(source: fifty-percent, alt: "") +@Image(source: fifteen-percent, alt: "A large text Keynote slide saying \"Approximately 15% of the world''s population live with disabilities\"") -There are many reasons why one would want to *include* more people — from straightforward sales increase to moral beliefs, but regardlessly of the case the work is the same: *to provide equal access to the same experience*. -@Image(source: fifteen-percent, alt: "") +There are many reasons why one would want to *include* more people — from straightforward sales increase to moral beliefs, but regardlessly of the case the **goal** is the same: *to provide equal access to the same experience*. +@Image(source: fifty-percent, alt: "A large text Keynote slide saying \"More than 50% is the average number of mobile users that turn on at least one of Accessibility settings\"") -## Computer Accessibility -## миша привет -Computer accessibility, often referred to as **a11y**, includes a wide range of solutions that are aimed to enhance approachability of digital products. It can be done by using **assistive technology**, which is specialised *software* or *hardware*, or a *combination* of both. -@Image(source: a11y, alt: "") +## Computer accessibility +**Computer accessibility**, often referred to as **a11y**, includes a wide range of solutions that are aimed to enhance **approachability of digital products**. It can be done by using **assistive technology**, which is specialised *software* or *hardware*, or a *combination* of both. +@Image(source: a11y, alt: "A schematic explanation of the word ally being a numeronym: a + ccessibility (which is eleven letters) + y") { + **a11y** is a [**numeronym**](https://en.wikipedia.org/wiki/Numeronym) of **accessibility** +} -## iOS Accessibility +## Accessibility of iOS In this book we are going to discuss **how to make iOS applications accessible**. Due to the current state of technological advancement the task may be narrowed to *adapting* your programs to the use of **assistive technology**, which involves nothing more than following [**specific design guidelines**]() that support the usage of [**Accessibility Features**]() and promote **inclusivity**. -@Image(source: ios-a11y, alt: "") + +@Image(source: ios-a11y, alt: "A decorative image showing a smartphone symbol plus accessibility symbol") ### History of iOS Accessibility -[**"A Timeline of iOS Accessibility: It Started with 36 Seconds"**](https://www.macstories.net/stories/a-timeline-of-ios-accessibility-it-started-with-36-seconds/) is a marvellous research done by **Shelly Brisbin** that covers the path Apple has been following to make their mobile devices accessible from the very beginning of iPhones story. -@Image(source: 36-seconds, alt: "") +[**"A Timeline of iOS Accessibility: It Started with 36 Seconds"**](https://www.macstories.net/stories/a-timeline-of-ios-accessibility-it-started-with-36-seconds/) is a marvellous research done by **Shelly Brisbin** that covers the path Apple has been following to make their devices accessible from the very beginning of iPhone story. +@Image(source: 36-seconds, alt: "A screenshot of the article's web page") + +### Current state +From June 8, 2009 Apple hasn't stopped for a second in promotion of **accessible design**. [**Inclusivity**](https://www.apple.com/diversity/) is one of the *core values* the company has been always exposing and [**accessibility**](https://www.apple.com/accessibility/) is an immanent part of it. -### Current State -From June 8, 2009 Apple hasn't stopped for a second in promotion of **accessible design**. [**Inclusivity**](https://www.apple.com/diversity/) is one of the core values the company has been always exposing and [**accessibility**](https://www.apple.com/accessibility/) is an immanent part of it. Aiming to make a product as *universal* so everyone can use it led Apple to unmeasurable efforts put to assistive technology support. +Aiming to make a product as *universal* so everyone can use it led Apple to unmeasurable efforts put to [**assistive technology**]() support. @Row { @Column { @@ -154,14 +158,17 @@ From June 8, 2009 Apple hasn't stopped for a second in promotion of **accessible } } -### Available Features +### Available features As for today here is the list of all [**Accessible Features**]() on iOS. -@Image(source: features-list, alt: "") +@Image(source: features-list, alt: "A large text Keynote slide listing Accessibility Features: Dynamic Type, VoiceOver, Zoom, Spoken Content features, Reduce Transparency, Switch Control, Reduce Motion, On and Off labels, AssistiveTouch, Full keyboard access, Voice Control, Bold Text, Pointer Control, Sound Recognition, Guided Access, Dwel Control, Type to Siri, Sound Actions, Button Shapes, Color Filters, Increase Contrast, Hearing Aids") + +To see how these technologies **adjust the user experience** go to the settings and play around. + +@Image(source: settings-features, alt: "To turn Accessibility Features on, go to Settings app and find Accessibility category") -To see how these technologies personalise the user experience go to the settings and play around. Please consider that turning on some features like [**Switch Control**]() may be tricky to turn off, so make sure you are *aware* of what is going to happen when you toggle the settings. -@Image(source: settings-features, alt: "") +> Warning: Please consider that turning on some features like [**Switch Control**]() may be tricky to turn off, so make sure you are *aware* of what is going to happen when you toggle the settings. -To know more about *specific features*, their **concepts** and **implementations** visit the guides in [**Accessibility Feature**]() series. +To know more about *specific features*, their **concepts** and **implementations** visit the guides in [**Accessibility Features**]() series: @Links(visualStyle: list) { - - @@ -173,21 +180,21 @@ To know more about *specific features*, their **concepts** and **implementations - } -### Community Practices -Finally, we came to the point where stating the purpose of this book is possible. [**iOS Accessibility Handbook**](https://vodgroup.github.io/AccessibilityDocumentation/documentation/iosaccessibilityhandbook) is a collection of guidelines of how to develop software for iOS which supports [**Accessible Features**]() and promotes [**accessible design**](). -@Image(source: human-interface-guidelines, alt: "") +### Community practices +Finally, we came to the point where stating the **purpose of this book** is possible. [**iOS Accessibility Handbook**](https://vodgroup.github.io/AccessibilityDocumentation/documentation/iosaccessibilityhandbook) is a collection of *guidelines* of how to create software for iOS which supports [**Accessible Features**]() and promotes [**accessible design**](). +@Image(source: human-interface-guidelines, alt: "A screenshot of Apple's Human Interface Guidelines web page") -To dive into the process of developing accessible applications open the [**Table of Contents**](https://vodgroup.github.io/AccessibilityDocumentation/tutorials/adaptionstrategy), which covers the *practical* side of the book. -@Image(source: roadmap, alt: "") +To dive right into the process of developing accessible applications open the [**iOS Accessibility Guide**](https://vodgroup.github.io/AccessibilityDocumentation/tutorials/adaptionstrategy) map, which covers the *practical* side of the book. +@Image(source: roadmap, alt: "A screenshot of the guide's map") -If you want to learn about accessibility in general first, take a look at the articles from **General Knowledge** category. +Otherwise, if you want to **learn about accessibility** in general first, take a look at the articles from **General Knowledge** category. @Links(visualStyle: detailedGrid) { - - + - - - - - - - - + - + - } ## Have fun! diff --git a/Sources/iOSAccessibilityHandbook/iOSAccessibilityHandbook.docc/Pages/iOSAccessibilityHandbook.md b/Sources/iOSAccessibilityHandbook/iOSAccessibilityHandbook.docc/Pages/iOSAccessibilityHandbook.md index 4d84b63..a403764 100644 --- a/Sources/iOSAccessibilityHandbook/iOSAccessibilityHandbook.docc/Pages/iOSAccessibilityHandbook.md +++ b/Sources/iOSAccessibilityHandbook/iOSAccessibilityHandbook.docc/Pages/iOSAccessibilityHandbook.md @@ -20,13 +20,13 @@ Make your iOS application accessible for everyone @PageColor(blue) } -## — What is this? +## Welcome to iOS Accessibility Handbook -iOS Accessibility Handbook is an open-source **educational project** about making iOS applications *accessible*. Accessible application is such application that works with various *assistive technologies*, such as [**VoiceOver**](https://www.apple.com/accessibility/voiceover), [**Voice Control**](https://support.apple.com/en-us/HT210417) and [**Switch Control**](https://support.apple.com/en-us/HT201370), which enable **people with disabilities** use the application. +[**iOS Accessibility Handbook**]() is an open-source **educational project** about making iOS applications *accessible*. Accessible application is such application that works with various *assistive technologies*, such as [**VoiceOver**](https://www.apple.com/accessibility/voiceover), [**Voice Control**](https://support.apple.com/en-us/HT210417) and [**Switch Control**](https://support.apple.com/en-us/HT201370), which enable **people with disabilities** use the application. @Image(source: features-1, alt: "") @Image(source: features-2, alt: "") -### Interactive Learning +### Interactive learning This handbook provides *extended documentation* of [**Accessibility Features**]() API, including: - verbose *articles* on the topic; - interactive *guides* to follow step-by-step; @@ -34,25 +34,27 @@ This handbook provides *extended documentation* of [**Accessibility Features**]( In other words, materials here cover **everything one could ever need to know about accessibility on iOS**. -### Target Audience +### Target audience The project is dedicated to help *developers*, *designers*, *testers*, *researchers* and *mere users* — in other words, to *everyone working with accessibility* on iOS. There is **no commercial underlayment** and the only reason the project exists is to popularise the topic and *share* relevant real-life experience of contributing *accessibility professionals*. ### Featured @Links(visualStyle: detailedGrid) { - - - - + - + - } -## — How does it work? +## Book structure The handbook is somewhat of a *complete course* of **how to make iOS applications accessible** regardless of the stage of its development. The material is split into conceptual *topics* and categorised by its relation to particular assistive technologies and field of implementation. -To know more about the book's structure scroll down to the bottom of the page where the [**table of contents**](https://vodgroup.github.io/AccessibilityDocumentation/documentation/iosaccessibilityhandbook/#topics) is. +@Image(source: book-content, alt: "") -### Technical Implementation +To know more about the book's structure take a look at the left side of the page where the [**table of contents**](https://vodgroup.github.io/AccessibilityDocumentation/documentation/iosaccessibilityhandbook/#topics) is. + +### Technical implementation At the moment the project's form is defined by being a *documentation catalog* ([**DocC**](https://www.swift.org/documentation/docc)) hosted by [**GitHub pages**](https://pages.github.com). -To contribute to the project visit its [GitHub page](https://github.com/VODGroup/AccessibilityDocumentation) and see the instruction of how one may help. +To contribute to the project visit its [GitHub page](https://github.com/VODGroup/AccessibilityDocumentation) and see the instruction of how you may help. ### Contributors The resources are provided by **Mikhail Rubanov**, Head of Mobile Development at [**Dodo Brands**](https://dodobrands.io), an accessibility activist and the author of ["**About Accessibility on iOS**"]( https://rubanov.dev/a11y-book) book. Exemplary and illustrative materials are based on his *working experience*.