SlideShare una empresa de Scribd logo
1 de 22
people
Learnings for Accessibility
Tasneem Sayeed
June 6, 2013
Agenda
• Accessibility
– What it means for an iOS developer
– How do I make my app accessible
• Accessibility Attributes & Traits
• Adding Accessibility
– via Interface Builder
– In Code
• Accessibility Notifications
• VoiceOver specific API
• Scrollable Elements
• Accessibility Containers
• Best Practices for Accessibility
• Summary
• Making Your App Accessible
– The iOS Human Interface Guidelines provide detailed instructions
on how to create an intuitive interface that enables users with
disabilities to accomplish tasks quickly and efficiently, while
maintaining the consistency and ease of learning that
characterizes successful iOS apps.
– Developers that use standard controls and their subclasses will
find that support for accessibility is built-in. Apple’s Accessibility
APIs define how iOS apps can make their user interface available
to an external assistive app or service.
Accessibility in iOS
• How it Works
– VoiceOver interacts with objects in your app to allow people with
disabilities to drive the user interface in an alternative manner. For
example, a VoiceOver user relies solely on an alternative set of
gestures for control, and on speech synthesis or braille for
feedback.
– VoiceOver intercepts all the gestures on the screen
- Settings => General =>Accessibility=>VoiceOver=>On
- One Click or Touch => Focus
- Double-Click => Activates
- Three Fingers => Replaces one finger swipe
- One Finger Swipe => Replaces Tab Key
- Triple Click Home => Quick way to turn on/off VoiceOver
Accessibility in iOS
Accessibility
• Accessibility API introduced in iOS 3.0
• An accessibility interface
– Allows another process to
• Access individual items in the UI
• Query for status and description
• Perform actions and events
• The remote process is an Assistive Technology
(i.e. VoiceOver)
Accessibility Attributes
Common Accessibility Attributes
Accessibility Traits
• Accessibility Traits
– Tell an assistive application how an accessibility element behaves
or should be treated.
• UIAccessibilityTraits
– A mask that contains the OR combination of the accessibility traits
that best characterize an accessibility element.
Other Accessibility Attributes
Adding Accessibility with Interface Builder
• Changing Simple Accessibility values
– accessibilityLabel
– isAccessibilityElement
– accessibilityHint
– accessibilityTraits
Adding Accessibility in Code
• If Accessibility values change
Accessibility Notifications
• Notifications
– Tell VoiceOver something has happened
• 2 types of Accessibility Notifications
– Those which your app can post.
• You post accessibility notifications with UIAccessibilityPostNotification
and observe with the default notification center.
– And those which your app can observe.
• The observable accessibility notifications are posted by UIKit when
something in the app’s environment changes, such as when an
accessibility setting is toggled, or when the layout of a screen changes.
Accessibility Notifications
• Screen changes: when your UI changes dramatically.
– Usually when a user moves into a different part of your app
(navigates to a different screen).
UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification,
nil);
• Layout changes: if some part of your UI changes, but the user
hasn’t necessarily jumped to an entirely different part of your
app.
– This notification tells VoiceOver to re-read the current state of all
accessible items that are on-screen, and by doing this it figures out
what has changed and informs the user of those changes.
UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification,
nil);
• Dynamic changes: if a part of your user interface is dealing
with some dynamically changing information (state changes,
data changes, etc.). This notification tells VoiceOver to read it
out to the user.
• UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification,
@”Loading complete.”);
VoiceOver-specific API
• VoiceOver-specific API
– Sometimes it is useful to determine whether or not VoiceOver is running,
and to do different things depending on whether it is or not.
– A program can, at any time, test to see whether VoiceOver is
enabled or not.
VoiceOver-specific API
• VoiceOver-specific API
– Track where focus is
Accessibility Actions for
Scrollable Elements
• Scrollable Elements
– Implement this method if a view in the view hierarchy supports a scroll by page action.
Accessibility Containers
• Used for custom views with multiple containers
• Returns Accessibility “sub-elements”
– Ex. MonthView: UIView
• Creating an Accessibility Sub-element (fake element)
– Make a UIAccessibilityElement
• Wraps all important data about an object and sends it over to VoiceOver
Accessibility Containers
• Make the Contents of Custom Container Views Accessible
– If your application displays a custom view that contains other elements with
which users interact, you need to make the contained elements separately
accessible.
– Need to make sure that the container view itself is not accessible. The reason is
that users interact with the contents of the container, not with the container
itself.
– Custom container view should implement the UIAccessibilityContainer
protocol.
• This protocol defines methods that make the contained elements available in
an array.
– The following container view creates the array of accessible elements
only when methods of the UIAccessibilityContainer protocol are called.
As a result, if iPhone accessibility is not currently active, the array is not
created.
Accessibility Containers
Accessibility Containers
Best Practices for Accessibility
• Use short concise labels
– Good: “Add city”
– Bad: “Add a city to the list of cities”
• Don’t include the type information in the label
– Good: “Remove City”
– Bad: “Remove City button”
• Use localized strings for labels and hints
– Good: VoiceOver works in over 30 languages
– Localize number and localize dates
• Use NSNumberFormatter
• With custom table view cells
– Only need to add accessibilityLabel
– If there are multiple strings, concatenate with commas
Summary
• What is Accessibility?
– What it means for an iOS developer
– How do I make my apps accessible?
• Common Accessibility Attributes & Traits
• Adding Accessibility
– Interface Builder
– In Code
• Accessibility Notifications
• VoiceOver specific API
• Scrollable Elements
• Accessibility Containers
• Best Practices for Accessibility
Resources
– Accessibility Programming Guide for iOS
http://developer.apple.com/library/ios/#documentation/UserExperience/
Conceptual/iPhoneAccessibility/Introduction/Introduction.html
– UIAccessibility Protocol Reference
http://developer.application.com for UIAccessibility
– VoiceOver User Manual
http://support.apple.com/manuals/iPhone/
– The Librarian: Accessibility on iOS: Make an App for Everyone
http://yaccessibilityblog.com/wp/librarian-accessibility-ios.html
– Mobile Accessiblity (posted on Oct 8, 2012 by Ted)
http://www.last-child.com/mobile-accessibility

Más contenido relacionado

La actualidad más candente

iOS app dev Training - Session1
iOS app dev Training - Session1iOS app dev Training - Session1
iOS app dev Training - Session1
Hussain Behestee
 

La actualidad más candente (9)

iOS app dev Training - Session1
iOS app dev Training - Session1iOS app dev Training - Session1
iOS app dev Training - Session1
 
SwiftUI - Performance and Memory Management
SwiftUI - Performance and Memory ManagementSwiftUI - Performance and Memory Management
SwiftUI - Performance and Memory Management
 
Building a TV show with Angular, Bootstrap, and Web Services
Building a TV show with Angular, Bootstrap, and Web ServicesBuilding a TV show with Angular, Bootstrap, and Web Services
Building a TV show with Angular, Bootstrap, and Web Services
 
iOS Development (Part 2)
iOS Development (Part 2)iOS Development (Part 2)
iOS Development (Part 2)
 
How native is React Native? | React Native vs Native App Development
How native is React Native? | React Native vs Native App DevelopmentHow native is React Native? | React Native vs Native App Development
How native is React Native? | React Native vs Native App Development
 
UI Testing with Earl Grey
UI Testing with Earl GreyUI Testing with Earl Grey
UI Testing with Earl Grey
 
Api application programming interface
Api application programming interfaceApi application programming interface
Api application programming interface
 
AI: Mobile Apps That Understands Your Intention When You Typed
AI: Mobile Apps That Understands Your Intention When You TypedAI: Mobile Apps That Understands Your Intention When You Typed
AI: Mobile Apps That Understands Your Intention When You Typed
 
Training Session 2 - Day 2
Training Session 2 - Day 2Training Session 2 - Day 2
Training Session 2 - Day 2
 

Destacado

Improving 3rd Party Script Performance With IFrames
Improving 3rd Party Script Performance With IFramesImproving 3rd Party Script Performance With IFrames
Improving 3rd Party Script Performance With IFrames
Philip Tellis
 
Session 210 _accessibility_for_ios
Session 210 _accessibility_for_iosSession 210 _accessibility_for_ios
Session 210 _accessibility_for_ios
cheinyeanlim
 
Assistive Technology
Assistive TechnologyAssistive Technology
Assistive Technology
Amy G.
 

Destacado (20)

Improving 3rd Party Script Performance With IFrames
Improving 3rd Party Script Performance With IFramesImproving 3rd Party Script Performance With IFrames
Improving 3rd Party Script Performance With IFrames
 
Random Hacks of Kindness
Random Hacks of KindnessRandom Hacks of Kindness
Random Hacks of Kindness
 
Dynamic and accessible web content with WAI-ARIA
Dynamic and accessible web content with WAI-ARIADynamic and accessible web content with WAI-ARIA
Dynamic and accessible web content with WAI-ARIA
 
Introduction to mobile accessibility - AccessU 2013
Introduction to mobile accessibility - AccessU 2013Introduction to mobile accessibility - AccessU 2013
Introduction to mobile accessibility - AccessU 2013
 
The Yahoo Social Accessibility Lab
The Yahoo Social Accessibility LabThe Yahoo Social Accessibility Lab
The Yahoo Social Accessibility Lab
 
Ubiquitous Transactions - Financial Future and Accessibility
Ubiquitous Transactions - Financial Future and AccessibilityUbiquitous Transactions - Financial Future and Accessibility
Ubiquitous Transactions - Financial Future and Accessibility
 
Create Accessible Infographics
Create Accessible Infographics Create Accessible Infographics
Create Accessible Infographics
 
Designing for cognitive disabilities
Designing for cognitive disabilitiesDesigning for cognitive disabilities
Designing for cognitive disabilities
 
Mystery Meat 2.0 – Making hidden mobile interactions accessible
Mystery Meat 2.0 – Making hidden mobile interactions accessibleMystery Meat 2.0 – Making hidden mobile interactions accessible
Mystery Meat 2.0 – Making hidden mobile interactions accessible
 
Accessibility metrics Accessibility Data Metrics and Reporting – Industry Bes...
Accessibility metrics Accessibility Data Metrics and Reporting – Industry Bes...Accessibility metrics Accessibility Data Metrics and Reporting – Industry Bes...
Accessibility metrics Accessibility Data Metrics and Reporting – Industry Bes...
 
Session 210 _accessibility_for_ios
Session 210 _accessibility_for_iosSession 210 _accessibility_for_ios
Session 210 _accessibility_for_ios
 
iOS Accessibility
iOS AccessibilityiOS Accessibility
iOS Accessibility
 
Assistive Technology
Assistive TechnologyAssistive Technology
Assistive Technology
 
iOS Accessibility
iOS AccessibilityiOS Accessibility
iOS Accessibility
 
Android accessibility for developers and QA
Android accessibility for developers and QAAndroid accessibility for developers and QA
Android accessibility for developers and QA
 
ATIA Workshop - iOS Accessibility
ATIA Workshop - iOS AccessibilityATIA Workshop - iOS Accessibility
ATIA Workshop - iOS Accessibility
 
CSUN 2017 Success Criteria: Dependencies and Prioritization
CSUN 2017 Success Criteria: Dependencies and PrioritizationCSUN 2017 Success Criteria: Dependencies and Prioritization
CSUN 2017 Success Criteria: Dependencies and Prioritization
 
The 7 minute accessibility assessment and app rating system
The 7 minute accessibility assessment and app rating systemThe 7 minute accessibility assessment and app rating system
The 7 minute accessibility assessment and app rating system
 
Mind your lang (for role=drinks at CSUN 2017)
Mind your lang (for role=drinks at CSUN 2017)Mind your lang (for role=drinks at CSUN 2017)
Mind your lang (for role=drinks at CSUN 2017)
 
Rethinking Accessibility: Role-Based Analysis of WCAG 2.0 - CSUN 2017
Rethinking Accessibility: Role-Based Analysis of WCAG 2.0 - CSUN 2017Rethinking Accessibility: Role-Based Analysis of WCAG 2.0 - CSUN 2017
Rethinking Accessibility: Role-Based Analysis of WCAG 2.0 - CSUN 2017
 

Similar a Learnings for Accessibility for iOS Platform

2. the aegis story building an accessible application
2. the aegis story   building an accessible application2. the aegis story   building an accessible application
2. the aegis story building an accessible application
AEGIS-ACCESSIBLE Projects
 
Accessibility in android And Add accessibility hooks to a custom view
Accessibility in android And Add accessibility hooks to a custom viewAccessibility in android And Add accessibility hooks to a custom view
Accessibility in android And Add accessibility hooks to a custom view
Aly Arman
 

Similar a Learnings for Accessibility for iOS Platform (20)

Automating Mobile Applications
Automating Mobile ApplicationsAutomating Mobile Applications
Automating Mobile Applications
 
Android Development Tutorial
Android Development TutorialAndroid Development Tutorial
Android Development Tutorial
 
A11Y Camp - Lessons learnt from building accessible native mobile apps
A11Y Camp - Lessons learnt from building accessible native mobile appsA11Y Camp - Lessons learnt from building accessible native mobile apps
A11Y Camp - Lessons learnt from building accessible native mobile apps
 
Dreamforce 2017 - Up close and personal with Lightning Experience as Platform
Dreamforce 2017 - Up close and personal with Lightning Experience as PlatformDreamforce 2017 - Up close and personal with Lightning Experience as Platform
Dreamforce 2017 - Up close and personal with Lightning Experience as Platform
 
DF14: Drive Salesforce User Productivity with the Pebble SmartWatch
DF14: Drive Salesforce User Productivity with the Pebble SmartWatchDF14: Drive Salesforce User Productivity with the Pebble SmartWatch
DF14: Drive Salesforce User Productivity with the Pebble SmartWatch
 
Embedded Systems.pdf
Embedded Systems.pdfEmbedded Systems.pdf
Embedded Systems.pdf
 
Mobile Accessibility - How To Become Socially Responsible Mobile Developer
Mobile Accessibility - How To Become Socially Responsible Mobile Developer Mobile Accessibility - How To Become Socially Responsible Mobile Developer
Mobile Accessibility - How To Become Socially Responsible Mobile Developer
 
2. the aegis story building an accessible application
2. the aegis story   building an accessible application2. the aegis story   building an accessible application
2. the aegis story building an accessible application
 
Accessibility in android And Add accessibility hooks to a custom view
Accessibility in android And Add accessibility hooks to a custom viewAccessibility in android And Add accessibility hooks to a custom view
Accessibility in android And Add accessibility hooks to a custom view
 
Accessibility Standards and the Mobile Web
Accessibility Standards and the Mobile WebAccessibility Standards and the Mobile Web
Accessibility Standards and the Mobile Web
 
Nonintrusive semantic html5
Nonintrusive semantic html5Nonintrusive semantic html5
Nonintrusive semantic html5
 
Basics 4
Basics   4Basics   4
Basics 4
 
IBM Inclusive Social Learning - Educause 2015
IBM Inclusive Social Learning - Educause 2015IBM Inclusive Social Learning - Educause 2015
IBM Inclusive Social Learning - Educause 2015
 
iOS and Android accessibility APIs (AccessU 2017)
iOS and Android accessibility APIs (AccessU 2017)iOS and Android accessibility APIs (AccessU 2017)
iOS and Android accessibility APIs (AccessU 2017)
 
Accessibilitytesting public
Accessibilitytesting publicAccessibilitytesting public
Accessibilitytesting public
 
MAST Portal: drivers and recommendations
MAST Portal: drivers and recommendations  MAST Portal: drivers and recommendations
MAST Portal: drivers and recommendations
 
Web accessibility is everyone's job
Web accessibility is everyone's jobWeb accessibility is everyone's job
Web accessibility is everyone's job
 
Introduction of Xcode
Introduction of XcodeIntroduction of Xcode
Introduction of Xcode
 
EU policies in e-inclusion
EU policies in e-inclusionEU policies in e-inclusion
EU policies in e-inclusion
 
Usable ARIA: the Fluid Infusion component set and the relationship between AR...
Usable ARIA: the Fluid Infusion component set and the relationship between AR...Usable ARIA: the Fluid Infusion component set and the relationship between AR...
Usable ARIA: the Fluid Infusion component set and the relationship between AR...
 

Último

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Último (20)

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 

Learnings for Accessibility for iOS Platform

  • 2. Agenda • Accessibility – What it means for an iOS developer – How do I make my app accessible • Accessibility Attributes & Traits • Adding Accessibility – via Interface Builder – In Code • Accessibility Notifications • VoiceOver specific API • Scrollable Elements • Accessibility Containers • Best Practices for Accessibility • Summary
  • 3. • Making Your App Accessible – The iOS Human Interface Guidelines provide detailed instructions on how to create an intuitive interface that enables users with disabilities to accomplish tasks quickly and efficiently, while maintaining the consistency and ease of learning that characterizes successful iOS apps. – Developers that use standard controls and their subclasses will find that support for accessibility is built-in. Apple’s Accessibility APIs define how iOS apps can make their user interface available to an external assistive app or service. Accessibility in iOS
  • 4. • How it Works – VoiceOver interacts with objects in your app to allow people with disabilities to drive the user interface in an alternative manner. For example, a VoiceOver user relies solely on an alternative set of gestures for control, and on speech synthesis or braille for feedback. – VoiceOver intercepts all the gestures on the screen - Settings => General =>Accessibility=>VoiceOver=>On - One Click or Touch => Focus - Double-Click => Activates - Three Fingers => Replaces one finger swipe - One Finger Swipe => Replaces Tab Key - Triple Click Home => Quick way to turn on/off VoiceOver Accessibility in iOS
  • 5. Accessibility • Accessibility API introduced in iOS 3.0 • An accessibility interface – Allows another process to • Access individual items in the UI • Query for status and description • Perform actions and events • The remote process is an Assistive Technology (i.e. VoiceOver)
  • 7. Accessibility Traits • Accessibility Traits – Tell an assistive application how an accessibility element behaves or should be treated. • UIAccessibilityTraits – A mask that contains the OR combination of the accessibility traits that best characterize an accessibility element.
  • 9. Adding Accessibility with Interface Builder • Changing Simple Accessibility values – accessibilityLabel – isAccessibilityElement – accessibilityHint – accessibilityTraits
  • 10. Adding Accessibility in Code • If Accessibility values change
  • 11. Accessibility Notifications • Notifications – Tell VoiceOver something has happened • 2 types of Accessibility Notifications – Those which your app can post. • You post accessibility notifications with UIAccessibilityPostNotification and observe with the default notification center. – And those which your app can observe. • The observable accessibility notifications are posted by UIKit when something in the app’s environment changes, such as when an accessibility setting is toggled, or when the layout of a screen changes.
  • 12. Accessibility Notifications • Screen changes: when your UI changes dramatically. – Usually when a user moves into a different part of your app (navigates to a different screen). UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, nil); • Layout changes: if some part of your UI changes, but the user hasn’t necessarily jumped to an entirely different part of your app. – This notification tells VoiceOver to re-read the current state of all accessible items that are on-screen, and by doing this it figures out what has changed and informs the user of those changes. UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil); • Dynamic changes: if a part of your user interface is dealing with some dynamically changing information (state changes, data changes, etc.). This notification tells VoiceOver to read it out to the user. • UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, @”Loading complete.”);
  • 13. VoiceOver-specific API • VoiceOver-specific API – Sometimes it is useful to determine whether or not VoiceOver is running, and to do different things depending on whether it is or not. – A program can, at any time, test to see whether VoiceOver is enabled or not.
  • 14. VoiceOver-specific API • VoiceOver-specific API – Track where focus is
  • 15. Accessibility Actions for Scrollable Elements • Scrollable Elements – Implement this method if a view in the view hierarchy supports a scroll by page action.
  • 16. Accessibility Containers • Used for custom views with multiple containers • Returns Accessibility “sub-elements” – Ex. MonthView: UIView • Creating an Accessibility Sub-element (fake element) – Make a UIAccessibilityElement • Wraps all important data about an object and sends it over to VoiceOver
  • 17. Accessibility Containers • Make the Contents of Custom Container Views Accessible – If your application displays a custom view that contains other elements with which users interact, you need to make the contained elements separately accessible. – Need to make sure that the container view itself is not accessible. The reason is that users interact with the contents of the container, not with the container itself. – Custom container view should implement the UIAccessibilityContainer protocol. • This protocol defines methods that make the contained elements available in an array. – The following container view creates the array of accessible elements only when methods of the UIAccessibilityContainer protocol are called. As a result, if iPhone accessibility is not currently active, the array is not created.
  • 20. Best Practices for Accessibility • Use short concise labels – Good: “Add city” – Bad: “Add a city to the list of cities” • Don’t include the type information in the label – Good: “Remove City” – Bad: “Remove City button” • Use localized strings for labels and hints – Good: VoiceOver works in over 30 languages – Localize number and localize dates • Use NSNumberFormatter • With custom table view cells – Only need to add accessibilityLabel – If there are multiple strings, concatenate with commas
  • 21. Summary • What is Accessibility? – What it means for an iOS developer – How do I make my apps accessible? • Common Accessibility Attributes & Traits • Adding Accessibility – Interface Builder – In Code • Accessibility Notifications • VoiceOver specific API • Scrollable Elements • Accessibility Containers • Best Practices for Accessibility
  • 22. Resources – Accessibility Programming Guide for iOS http://developer.apple.com/library/ios/#documentation/UserExperience/ Conceptual/iPhoneAccessibility/Introduction/Introduction.html – UIAccessibility Protocol Reference http://developer.application.com for UIAccessibility – VoiceOver User Manual http://support.apple.com/manuals/iPhone/ – The Librarian: Accessibility on iOS: Make an App for Everyone http://yaccessibilityblog.com/wp/librarian-accessibility-ios.html – Mobile Accessiblity (posted on Oct 8, 2012 by Ted) http://www.last-child.com/mobile-accessibility