201 iosaccessibility 03 d final df -...

122
© 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple. iOS Accessibility Developing for everyone Ian Fisch iOS Accessibility App Frameworks #WWDC15 Session 201

Upload: duongdiep

Post on 29-Jul-2018

227 views

Category:

Documents


0 download

TRANSCRIPT

© 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple.

iOS AccessibilityDeveloping for everyone

Ian Fisch iOS Accessibility

App Frameworks #WWDC15

Session 201

Supporting All Users

Agenda

Agenda

Accessibility features on iOS

Agenda

Accessibility features on iOSWhat’s new in iOS 9

Agenda

Accessibility features on iOSWhat’s new in iOS 9Accessibility audit

Agenda

Accessibility features on iOSWhat’s new in iOS 9Accessibility auditImplement accessibility

iOS Accessibility Features

HearingMade for iPhone Hearing Aids

LearningGuided Access

LearningGuided Access

VisionVoiceOver

VisionVoiceOver

VisionZoom

VisionZoom

VisionVision accommodations

VisionVision accommodations

Physical and MotorSwitch Control

Physical and MotorSwitch Control

Physical and MotorAssistive Touch

Physical and MotorAssistive Touch

Touch AccommodationsNew in iOS 9

DemoTouch accommodations

UIAccessibilityThe bridge between your app and accessibility

UIAccessibilityThe bridge between your app and accessibility

UIAccessibility

UIAccessibility

UIAccessibilityThe bridge between your app and accessibility

UIAccessibility

UIAccessibilityThe bridge between your app and accessibility

*Tap*

UIAccessibility

UIAccessibilityThe bridge between your app and accessibility

*Tap*

[yourElement accessibilityLabel]

UIAccessibility

UIAccessibilityThe bridge between your app and accessibility

*Tap*

[yourElement accessibilityLabel]

@“Weather”

UIAccessibility

UIAccessibilityThe bridge between your app and accessibility

*Tap*

[yourElement accessibilityLabel]

@“Weather”

UIAccessibility

UIAccessibilityThe bridge between your app and accessibility

UIAccessibility

UIAccessibilityThe bridge between your app and accessibility

*Menu*

UIAccessibility

UIAccessibilityThe bridge between your app and accessibility

*Menu*

[yourElement accessibilityCustomActions]

UIAccessibility

UIAccessibilityThe bridge between your app and accessibility

*Menu*

[yourElement accessibilityCustomActions]

<Move>, <Pass>, <Trade>

UIAccessibility

UIAccessibilityThe bridge between your app and accessibility

*Menu*

[yourElement accessibilityCustomActions]

<Move>, <Pass>, <Trade>

M P T Move Pass Trade

UIAccessibilityDo I serve a purpose?

UIAccessibilityDo I serve a purpose?

var isAccessibilityElement: Bool

UIAccessibilityDo I serve a purpose?

var isAccessibilityElement: Bool

UIAccessibilityDo I serve a purpose?

var isAccessibilityElement: Bool

self.isAccessibilityElement = true

UIAccessibilityWhat’s my name?

UIAccessibilityWhat’s my name?

var accessibilityLabel: String?

UIAccessibilityWhat’s my name?

var accessibilityLabel: String?

UIAccessibilityWhat’s my name?

var accessibilityLabel: String?

self.accessibilityLabel = “Button to add a clock”

UIAccessibilityWhat’s my name?

var accessibilityLabel: String?

self.accessibilityLabel = “Add”

self.accessibilityLabel = “Button to add a clock”

UIAccessibilityWhat’s my personality?

UIAccessibilityWhat’s my personality?

var accessibilityTraits: UIAccessibilityTraits

UIAccessibilityWhat’s my personality?

var accessibilityTraits: UIAccessibilityTraits

UIAccessibilityWhat’s my personality?

var accessibilityTraits: UIAccessibilityTraits

self.accessibilityTraits = UIAccessibilityTraitButton

UIAccessibilityWhat is my value?

UIAccessibilityWhat is my value?

var accessibilityValue: String?

UIAccessibilityWhat is my value?

var accessibilityValue: String?

UIAccessibilityWhat is my value?

var accessibilityValue: String?

self.accessibilityValue = “Eleven twenty AM”

UIAccessibilityHow should people interact with me?

UIAccessibilityHow should people interact with me?

var accessibilityHint: String?

UIAccessibilityHow should people interact with me?

var accessibilityHint: String?

UIAccessibilityHow should people interact with me?

var accessibilityHint: String?

self.accessibilityHint = “Drag up or down to change the order”

UIAccessibilityWhere am I?

UIAccessibilityWhere am I?

var accessibilityFrame: CGRect

UIAccessibilityWhere am I?

var accessibilityFrame: CGRect

UIAccessibilityWhere am I?

var accessibilityFrame: CGRect

func UIAccessibilityConvertFrameToScreenCoordinates(CGRect, UIView) -> CGRect

UIAccessibilityBasic API

UIAccessibilityBasic API

extension NSObject { var isAccessibilityElement: Bool var accessibilityLabel: String?

var accessibilityHint: String? var accessibilityValue: String? var accessibilityTraits: UIAccessibilityTraits var accessibilityFrame: CGRect }

UIAccessibilitySummary

UIAccessibilitySummary

We do most of the work

UIAccessibilitySummary

We do most of the workSmall investment

UIAccessibilitySummary

We do most of the workSmall investmentLarge reward

Building Accessible Apps

Building Accessible Apps

Design for accessibility

Building Accessible Apps

Design for accessibilityAudit your app

Building Accessible Apps

Design for accessibilityAudit your appAccessibility inspector

Building Accessible Apps

Design for accessibilityAudit your appAccessibility inspector

Building Accessible Apps

Design for accessibilityAudit your appAccessibility inspectorAccessibility features

Building Accessible Apps

Design for accessibilityAudit your appAccessibility inspectorAccessibility features• VoiceOver

Building Accessible Apps

Design for accessibilityAudit your appAccessibility inspectorAccessibility features• VoiceOver• Switch Control

DemoAccessibility Audit

Accessibility AuditResults

Accessibility AuditResults

Earthquake cell

Accessibility AuditResults

Earthquake cell• Not accessible

Accessibility AuditResults

Earthquake cell• Not accessible• Text color

Accessibility AuditResults

Earthquake cell• Not accessible• Text color

Map detail

Accessibility AuditResults

Earthquake cell• Not accessible• Text color

Map detail• Labels

Accessibility AuditResults

Earthquake cell• Not accessible• Text color

Map detail• Labels• Button

UIAccessibilityBasic API

UIAccessibilityBasic API

extension NSObject { var isAccessibilityElement: Bool var accessibilityLabel: String?

var accessibilityHint: String? var accessibilityValue: String? var accessibilityTraits: UIAccessibilityTraits var accessibilityFrame: CGRect }

DemoAccessibility API

Accessibility AuditResults

Accessibility AuditResults

✓Earthquake cell

✓Not accessible

✓Text color

Accessibility AuditResults

✓Earthquake cell

✓Not accessible

✓Text color

✓Map detail

✓Labels

✓Button

Accessibility AuditResults

✓Earthquake cell

✓Not accessible

✓Text color

✓Map detail

✓Labels

✓ButtonAdd favorite

Accessibility AuditResults

✓Earthquake cell

✓Not accessible

✓Text color

✓Map detail

✓Labels

✓ButtonAdd favoriteFavorite graph

Accessibility AuditResults

Accessibility AuditResults

Do I serve a purpose?

Accessibility AuditResults

Do I serve a purpose?

Accessibility AuditResults

Do I serve a purpose?Where am I?

Accessibility AuditResults

Do I serve a purpose?Where am I?

UIAccessibilityUIAccessibilityElement

UIAccessibilityUIAccessibilityElement

class UIAccessibilityElement : NSObject, UIAccessibilityIdentification { init(accessibilityContainer container: AnyObject) unowned(unsafe) var accessibilityContainer: AnyObject? var isAccessibilityElement: Bool var accessibilityLabel: String? var accessibilityHint: String? var accessibilityValue: String? var accessibilityFrame: CGRect var accessibilityTraits: UIAccessibilityTraits }

UIAccessibilityMagic Tap

UIAccessibilityMagic Tap

func accessibilityPerformMagicTap() -> Bool

UIAccessibilityMagic Tap

UIAccessibilityMagic Tap

New APIAccessibility Focus

New APIAccessibility Focus

func accessibilityAssistiveTechnologyFocusedIdentifiers() -> Set<String>?

func UIAccessibilityFocusedElement(assistiveTechnologyIdentifier: String?) -> AnyObject?

New APIAccessibility Focus

New APIAccessibility Focus

let UIAccessibilityElementFocusedNotification: String

let UIAccessibilityFocusedElementKey: String let UIAccessibilityUnfocusedElementKey: String let UIAccessibilityAssistiveTechnologyKey: String

DemoAccessibility API

Accessibility AuditResults

Accessibility AuditResults

✓Earthquake cell

✓Not accessible

✓Text color

✓Map detail

✓Labels

✓Button

Accessibility AuditResults

✓Earthquake cell

✓Not accessible

✓Text color

✓Map detail

✓Labels

✓Button

✓Add favorite

Accessibility AuditResults

✓Earthquake cell

✓Not accessible

✓Text color

✓Map detail

✓Labels

✓Button

✓Add favorite

✓Favorite graph

Summary

Summary

Accessibility is about users

Summary

Accessibility is about usersApple embraces accessibility

Summary

Accessibility is about usersApple embraces accessibilityJoin us

More Information

DocumentationUIAccessibilityhttp://developer.apple.com/library/

Technical SupportApple Developer Forumshttp://developer.apple.com/forums

Developer Technical Supporthttp://developer.apple.com/support/technical

General InquiriesPaul Marcos, App Frameworks [email protected]

Related Session and Lab

Apple Watch Accessibility Pacific Heights Tuesday 1:30PM

Accessibility and Speech Lab Frameworks Lab D Tuesday 2:30PM