SlideShare a Scribd company logo
Implementing
Inclusive
Interfaces
Sally Shepard // @mostgood
Implementing
Inclusive
Interfaces
accessible |əkˈsɛsɪb(ə)l|
adjective
able to be reached, entered, or used
by people who have a disability.
disability?
inclusive |ɪnˈkluːsɪv|
adjective
not excluding any section of society
or any party involved in something.
Implementing
Inclusive
Interfaces
interface |ˈɪntəәfeɪs|
noun
a device or program enabling a user
to communicate with a computer.
interface != GUI
Vision
VoiceOver
Zoom
Invert Colors
Greyscale
Larger Text
Bold Text
Button Shapes
Reduce Transparency
Increase Contrast
Reduce Motion
On/Off Labels
VoiceOver replicates
the GUI by speaking it.
VoiceOver speaks more
than 30 languages
Available on
iOS, OS X, Apple TV
& Apple Watch
To extend VoiceOver,
users can also use braille.
Braille displays
Braille displays
Braille Keyboards
That’s amazing!
Demo: Using VoiceOver
Physical /
Motor skills
Assistive Touch
New in iOS 9!
Touch Accommodation
Hold Duration
Tap Assistance
Switch Control
Implementing Inclusive Interfaces
Demo: Switch Control
Learning
Difficulties
Guided Access
How does Guided
Access work?
Hearing
Hearing Aids
LED Flash
Mono Audio
Noise Cancellation
Audio Balance
Subtitles & Captioning
Implementing
Inclusive
Interfaces
Accessibility APIs
Classes:
UIAccessibilityElement
UIAccessibilityCustomAction
Informal Protocols:
UIAccessibility
UIAccessibilityAction
UIAccessibilityContainer
UIAccessibilityFocus
Protocols:
UIAccessibilityReadingContent
UIAccessibilityIdentification
Basics of the
Accessibility APIs
isAccessibilityElement
sendButton.isAccessibliltyElement = YES;
VoiceOver: Describe the element
Label: Invert Colours - Off
Hint: Double-tap to toggle setting
Label: Vision
Trait: Heading
accessibilityLabel
- Label that identifies the accessibility element
- UIKit control: uses title
- Image-based controls definitely need to
specify this!
- Don’t include the control type
accessibilityTraits
- Combination of traits that best characterise
the accessibility element
- UIKit controls: defaults to standard traits
- Combine traits with an OR operator
- (UIAccessibilityTraits)accessibilityTraits
{
return [super accessibilityTraits] | UIAccessibilityTraitButton;
}
UIAccessibilityTraitNone;
UIAccessibilityTraitButton;
UIAccessibilityTraitLink;
UIAccessibilityTraitSearchField;
UIAccessibilityTraitImage;
UIAccessibilityTraitSelected;
UIAccessibilityTraitPlaysSound;
UIAccessibilityTraitKeyboardKey;
UIAccessibilityTraitStaticText;
UIAccessibilityTraitSummaryElement;
UIAccessibilityTraitNotEnabled;
UIAccessibilityTraitUpdatesFrequently;
UIAccessibilityTraitStartsMediaSession;
UIAccessibilityTraitAdjustable;
UIAccessibilityTraitAllowsDirectInteraction;
UIAccessibilityTraitCausesPageTurn;
UIAccessibilityTraitHeader;
accessibilityHint
- Describes the outcome of performing an action
- Don’t make it sound like a command
- Start with verb describing result
- Keep it brief
Note: can be disabled by user
“Sends the message”
- Enable accessibility
- Fill out Label and Hint
- Add traits
Testing
Simulator - Accessibility Inspector
Testing VoiceOver
on a device
Siri - turn VoiceOver on
Screen curtain
Three-finger triple-tap on the screen
Accessibility shortcut
Triple-tap the home button
Testing Switch Control
on a device
Inclusive User Experience
Make it functional.
Step 1:
Make a list of essential
user stories / features.
Step 2:
Test each feature,
recording the results as
you go.
Step 3:
Fix it until it’s functional.
Case study:
Gift Finder by
notonthehighstreet.com
A user can view all details about a product.
A user can purchase a product or products through the checkout.
A user can browse through the products by pre-defined categories.
A user can find a product by searching.
A user can select a product from a list of chosen picks.
A user can sort a list of products by relevance, price or date added.
A user can filter a list of products by price range and various criteria.
A user can view a list of products as a list or a grid.
A user can add a product to a list of favourites.
A user can add a product to the basket.
A user can customise a product by personalizing it.
A user can view all details about a product.
A user can view all
details about a
product.
A user can view all
details about a
product.
A user can view all
details about a
product.
A user can view all
details about a
product.
Implementing Inclusive Interfaces
Implementing Inclusive Interfaces
Testing results:
Highlight what’s read
out.
Testing results:
Highlight what’s read
out.
Testing results:
Highlight what’s read
out.
Testing results:
Highlight what’s read
out.
Testing results:
Block out anything
not enabled.
Testing results:
Block out anything
not enabled.
Testing results:
Block out anything
not enabled.
Testing results:
Block out anything
not enabled.
Add your testing results
to source control.
Fix any elements that
are not working.
- (void)viewDidLoad {
...
[self.closeButton setTitle:NSLocalizedString(@“close button title", nil)
forState:UIControlStateNormal];
self.closeButton.accessibilityTraits = UIAccessibilityTraitButton;
self.imageScrollView.isAccessibilityElement = YES;
self.addToFavouritesButton.isAccessibilityElement = YES;
[self.addToFavouritesButton setTitle:NSLocalizedString(@“add to favourites button
title", nil) forState:UIControlStateNormal];
self.addToFavouritesButton.accessibilityTraits = UIAccessibilityTraitButton;
self.addToCartButton.isAccessibilityElement = YES;
[self.addToCartButton setTitle:NSLocalizedString(@“add to cart button title", nil)
forState:UIControlStateNormal];
self.addToCartButton.accessibilityTraits = UIAccessibilityTraitButton;
...
}
In the “product detail class”
Fix it until it’s functional.
Adding polish
- (void)viewDidLoad {
...
self.isAccessibilityElement = YES;
self.accessibilityLabel = [NSString stringWithFormat:@"%@, %@", self.titleLabel.text,
self.priceLabel.text];
self.titleLabel.isAccessibilityElement = NO;
self.priceLabel.isAccessibilityElement = NO;
...
}
Group elements - In the “product cell class”
Find out if user has
VoiceOver on
BOOL isVoiceOverOn =
UIAccessiblityIsVoiceOverRunning():
Moving VoiceOver focus
UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification,
self.goButton);
Direct Interaction
- (UIAccessibilityTraits)accessibilityTraits
{
return UIAccessibilityTraitAllowsDirectInteraction;
}
Localization and
VoiceOver
- (NSString *)accessibilityLabel {
return NSLocalizedString(@"titleLabelText", nil);
}
titleLabel.accessibilityLabel =
NSLocalizedString(@"titleLabelText", nil);
//OR
Accessibility notifications
UIAccessibilityPostNotification(NAME, PARAMETER);
(UIAccessibilityPageScrolledNotification, @”Top of list”)
(UIAccessibilityAnnouncementNotification, @”New message”)
(UIAccessbilityLayoutChangedNotification, NSString or UIView)
etc...
Find out when VoiceOver is
finished speaking
Listen out for: UIAccessibilityAnnouncementDidFinishNotification
To find out if VoiceOver had finished reading or was interrupted, check
the userInfo:
UIAccessibilityAnnouncementKeyStringValue
UIAccessibilityAnnouncementKeyWasSuccessful
Magic Tap
Two-finger double-tap
- (BOOL)accessibilityPerformMagicTap
{
[self doAwesomeThing];
return YES;
}
Getting back
two-finger, scrub back and forth
- (BOOL)accessibilityPerformEscape
{
// Dismiss your view

return YES;
}
Modal presentation
@property(nonatomic) BOOL accessibilityViewIsModal
Reduce transparency
UIAccessibilityIsReduceTransparencyEnabled()
Reduce motion
UIAccessibilityIsReduceMotionEnabled()
Custom Actions
UIAccessibilityCustomAction
UIAccessibilityCustomAction *favouriteAction = [[UIAccessibilityCustomAction
alloc] initWithName:@“Add to favourites" target:self
selector:@selector(addToFavourites)];
UIAccessibilityCustomAction *addToBasketAction = [[UIAccessibilityCustomAction
alloc] initWithName:@“Add to basket" target:self
selector:@selector(addToBasket)];
for (UIView *element in cardView.accessibilityElements) {
element.accessibilityCustomActions = @[helloAction, goodbyeAction];
}
Web Content
https://developer.apple.com/videos/
wwdc/2014/?include=516#516
ARIA Support
Closed Captions for HTML5
Video
HTML5 Timed Text Tracks
HTML5 Media Synchronization
Captions for video
High DPI for image-set
Page visibility events
Web Speech API
Adding support for
Switch Control
UIAccessibilityNotificationSwitchControlIdentifier
New in iOS 8:
Pause and Resume
SwitchControl:
UIAccessibilityPauseAssistiveTechnologyNotification
UIAccessibilityResumeAssistiveTechnologyNotification
Adding Guided
Access support
UIGuidedAccessRestrictionDelegate
Homework!
Spend a whole day
with VoiceOver or
Switch Control
#1
Don’t make
assumptions.
#2
Where should you start?
Make it functional!
#3
Iterate & polish
#4
Make it a requirement
not a feature.
#5
Resources
Testing Accessibility on iOS:
developer.apple.com/library/ios/technotes/TestingAccessibilityOfiOSApps
Sample code for non-UIKit:
developer.apple.com/library/ios/samplecode/sc2216
Accessibility programming guide for iOS:
developer.apple.com/library/ios/documentation/UserExperience/
Conceptual/iPhoneAccessibility
WatchOS Accessibility WWDC session:
https://developer.apple.com/videos/wwdc/2015/?id=204
Impairment Simulator Software:
www.inclusivedesigntoolkit.com
Thank you!
Sally Shepard // @mostgood

More Related Content

PDF
Android ui menu
PPTX
Mobile Accessibility - How To Become Socially Responsible Mobile Developer
PDF
Implementing inclusive interfaces in iOS
PPT
Chapter 02
PDF
VB.Net-Controls and events
PPT
Module-5-screen based control (1).ppt
PPT
Module-5-screen based control.ppt
PDF
App design guide
Android ui menu
Mobile Accessibility - How To Become Socially Responsible Mobile Developer
Implementing inclusive interfaces in iOS
Chapter 02
VB.Net-Controls and events
Module-5-screen based control (1).ppt
Module-5-screen based control.ppt
App design guide

Similar to Implementing Inclusive Interfaces (20)

DOCX
Trabajo en ingles[1]
PDF
VB PPT by ADI PART4.pdf
PDF
VB PPT by ADI PART4.pdf
PDF
How to add rich interactions to your prototype
PDF
2 front panel
PPT
Netsupport
PDF
Guide to Fix Dropdown Button Not Switching Selected Item | Flutter
PPTX
Welcome to the smart notebook 11
PDF
How to Implement a Navigation MUI Drawer in Your React App
PDF
How to Use Material UI Tooltip Component Like a Pro
PDF
CSS Disable Button - How to Disable Buttons Using CSS - Blogs
PPT
Power point2007
PPT
Google calendar integration in iOS app
PDF
How to build accessible UI components
PPT
A 1 ppt excercis exx
PPT
A 1 ppt excercis exx
PDF
Accessibility microinteractions: better user experience, happier developers
PDF
iOS Accessibility
PPT
Promethean ActivInspire IWB Introduction
PPT
Power Point 2007 Get Up To Speed
Trabajo en ingles[1]
VB PPT by ADI PART4.pdf
VB PPT by ADI PART4.pdf
How to add rich interactions to your prototype
2 front panel
Netsupport
Guide to Fix Dropdown Button Not Switching Selected Item | Flutter
Welcome to the smart notebook 11
How to Implement a Navigation MUI Drawer in Your React App
How to Use Material UI Tooltip Component Like a Pro
CSS Disable Button - How to Disable Buttons Using CSS - Blogs
Power point2007
Google calendar integration in iOS app
How to build accessible UI components
A 1 ppt excercis exx
A 1 ppt excercis exx
Accessibility microinteractions: better user experience, happier developers
iOS Accessibility
Promethean ActivInspire IWB Introduction
Power Point 2007 Get Up To Speed
Ad

More from Sally Shepard (18)

PDF
Swift on Raspberry Pi
PDF
Swift hardware hacking @ try! Swift
PDF
Porting iOS apps to tvOS
PDF
Porting iOS apps to tvOS
PDF
Helping Users Create Good Habits @ AltConf 2017
PDF
iOS Accessibility Testing Workshop
PDF
Helping Users Create Good Habits @ MCE 2017
PDF
Debugging Accessibility @ Craft Conf
PDF
Accessibility
PDF
Debugging Accessibility
PDF
Crafting Great Accessible Experiences
PDF
Developing for Apple TV
PDF
Building habits: keeping users engaged
PDF
Extracurricular Swift
PDF
Inheriting iOS code
PDF
Making an app like 'Clear' Accessible
PDF
Making apps for the Apple TV
PDF
Beyond VoiceOver: making iOS apps accessible
Swift on Raspberry Pi
Swift hardware hacking @ try! Swift
Porting iOS apps to tvOS
Porting iOS apps to tvOS
Helping Users Create Good Habits @ AltConf 2017
iOS Accessibility Testing Workshop
Helping Users Create Good Habits @ MCE 2017
Debugging Accessibility @ Craft Conf
Accessibility
Debugging Accessibility
Crafting Great Accessible Experiences
Developing for Apple TV
Building habits: keeping users engaged
Extracurricular Swift
Inheriting iOS code
Making an app like 'Clear' Accessible
Making apps for the Apple TV
Beyond VoiceOver: making iOS apps accessible
Ad

Recently uploaded (20)

PDF
How Creative Agencies Leverage Project Management Software.pdf
PDF
Nekopoi APK 2025 free lastest update
PPTX
Introduction to Artificial Intelligence
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PPTX
Essential Infomation Tech presentation.pptx
PDF
System and Network Administration Chapter 2
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PPTX
Odoo POS Development Services by CandidRoot Solutions
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
How Creative Agencies Leverage Project Management Software.pdf
Nekopoi APK 2025 free lastest update
Introduction to Artificial Intelligence
Softaken Excel to vCard Converter Software.pdf
How to Migrate SBCGlobal Email to Yahoo Easily
VVF-Customer-Presentation2025-Ver1.9.pptx
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
2025 Textile ERP Trends: SAP, Odoo & Oracle
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
Design an Analysis of Algorithms I-SECS-1021-03
Navsoft: AI-Powered Business Solutions & Custom Software Development
wealthsignaloriginal-com-DS-text-... (1).pdf
Odoo Companies in India – Driving Business Transformation.pdf
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Essential Infomation Tech presentation.pptx
System and Network Administration Chapter 2
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Odoo POS Development Services by CandidRoot Solutions
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf

Implementing Inclusive Interfaces