Accessibility on ios. Make an app for everyone. Chris Fleizach ios Accessibility. Wednesday, December 1, 2010

Similar documents
How To Develop An App For Ios (Windows)

Customize Mobile Apps with MicroStrategy SDK: Custom Security, Plugins, and Extensions

ios Application Development &

Creating a Custom Class in Xcode

Smartphone Overview for the Blind and Visually Impaired

Event Kit Programming Guide

Assignment 2: Matchismo 2

INTRODUCTION TO OBJECTIVE-C CSCI 4448/5448: OBJECT-ORIENTED ANALYSIS & DESIGN LECTURE 12 09/29/2011

Praktikum Entwicklung von Mediensystemen mit

An Introduction to Modern Software Development Tools Creating A Simple GUI-Based Tool Appleʼs XCode Version 3.2.6

Xcode Application note

Mobile Accessibility. Jan Richards Project Manager Inclusive Design Research Centre OCAD University

Optimize Your Earning Power with iad

ios SDK Release Notes for ios 5.0 beta 3

ios Team Administration Guide (Legacy)

Apple URL Scheme Reference

Assignment 1: Matchismo

ios Dev Crib Sheet In the Shadow of C

ios Development Tutorial Nikhil Yadav CSE 40816/60816: Pervasive Health 09/09/2011

MOBILE APP DEVELOPMENT CUSTOM CROSS PLATFORM APPLICATIONS

Introducing. automated functional testing of mobile apps. Karl Krukow, CTO, LessPainful GotoAMS, May, 2012

How to pull content from the PMP into Core Publisher

Connect for iphone. Aug, 2012 Ver 5.3b AWest. 1 P age

TestFlight FAQ Apple Inc.

How to use Dropbox. What is Dropbox. Please read the University of Melbourne Guidelines on Dropbox and University Information prior to use.

Retool your HTML/JavaScript to go Mobile

Assignment I Walkthrough

Product Guide Nintex. All rights reserved. Errors and omissions excepted.

ArcGIS Viewer for Silverlight An Introduction

Mobility Introduction Android. Duration 16 Working days Start Date 1 st Oct 2013

Mobile Device and Application Strategy. Right Technology, Right Design, Right Price

ios Dev Fest Research Network Operations Center Thursday, February 7, 13

Summary Table Voluntary Product Accessibility Template

Student ipad User and Setup Guide

How To Use Ios 5

Going Social with ReplayKit and Game Center

iphone Objective-C Exercises

Managing Apple Devices

Tag Specification Document

Create shared Photostreams in ios 7

The full setup includes the server itself, the server control panel, Firebird Database Server, and three sample applications with source code.

Enterprise Mobile Application Development: Native or Hybrid?

View Controller Programming Guide for ios

IOS App Development Training

Enter Here -->>> App Store Tracking, Track your Rankings - AppStoreShark.com Scam or Work? Visit Here

This documentation is made available before final release and is subject to change without notice and comes with no warranty express or implied.

Salesforce Mobile Push Notifications Implementation Guide

2013 Honeywell Users Group Americas Symposium. Mobile App Guide

BAM Checkout Mobile Implementation Guide for ios

New Features in XE8. Marco Cantù RAD Studio Product Manager

How to wipe personal data and from a lost or stolen mobile device

The Best Mobile App Development Platform. Period.

Using HP ArcSight API for data visualization

Android Mobile App Building Tutorial

MA-WA1920: Enterprise iphone and ipad Programming

ios App for Mobile Website! Documentation!

CyberSource ios SDK for Apple Pay

Datatrans ios Payment Library

Mail Programming Topics

Epic Remote Access for Mobile Devices FAQ and Setup

Open Directory. Contents. Before You Start 2. Configuring Rumpus 3. Testing Accessible Directory Service Access 4. Specifying Home Folders 4

Managing and Supporting ipads in the Classroom Clint Stephens Southwest Educational Development Center

Introduction to iphone Development

Sprite Kit Programming Guide

VERVE 2 First Time User Guide

How do I Install and Configure MS Remote Desktop for the Haas Terminal Server on my Mac?

Developing Applications for ios

IT Information Packet

VPAT for Apple ipad Air 2

Objective-C and Cocoa User Guide and Reference Manual. Version 5.0

Lutron Home Control Remote Access FAQ

ios SDK possibilities & limitations

umobilecam Setup Guide All-in-One Mobile Surveillance for Android, ios, Mac, Windows Webcam, IP camera (version 1.0)

OS X Yosemite - Features

Continuous Integration with Xcode 6

CLOUD. MADE EASY. vnebula Portal

Mobile Secure Cloud Edition Document Version: ios Application Signing

INTRODUCTION TO IOS CSCI 4448/5448: OBJECT-ORIENTED ANALYSIS & DESIGN LECTURE 13 02/22/2011

Teacher Activities Page Directions

Visualizing Big Data. Activity 1: Volume, Variety, Velocity

Getting Started with VMware Horizon View (Remote Desktop Access)

Star Micronics Cloud Services ios SDK User's Manual

Guest Quick Guide PC and Mac Users Updated to version March 2015

automated acceptance testing of mobile apps

Presto User s Manual. Collobos Software Version Collobos Software, Inc

Christie Brio Frequently Asked Questions

Xcode Project Management Guide. (Legacy)

How do I Install and Configure MS Remote Desktop for the Haas Terminal Server on my Mac?

Basics of Accessible Design

Copyright 2010 The Pragmatic Programmers, LLC.

AppConnect FAQ for MobileIron Technology Partners! AppConnect Overview

Transcription:

Accessibility on ios Make an app for everyone Chris Fleizach ios Accessibility

About me B.S. Duke 02 Peace Corps (Tonga) M.S. UCSD 06 Four years at Apple (including internship) VoiceOver (Mac OS X) ios Accessibility

Accessibility Closed Captioning Zoom Screen readers Many others

Settings General Accessibility

I predict that the visually impaired community will agree that the iphone was the single biggest game changing piece of technology for the assistive tech industry in modern times. Josh de Lioncourt, maccessibility.net

Demo VoiceOver and Accessibility and Video

What You ll Learn ios Accessibility Overview UIAccessibility Protocol Accessibility Attributes Accessibility Containers Accessibility Actions VoiceOver-specific API Best Practices Apps for users with disabilities

Accessibility API An accessibility interface allows another process to Access individual items in the user interface Query for status, state and description Perform actions and events The remote process is an Assistive Technology (i.e. VoiceOver)

Accessibility Architecture VoiceOver UI Accessibility Protocol UI Accessibility Protocol Cupertino, 10:57AM

Making Accessible Apps Accessibility API introduced in ios 3.0 Lives in UIKit in UIAccessibility.h Allows an app to provide UI information to VoiceOver Standard controls in UIKit already accessible

UIAccessibility API: Attributes Accessibility attributes return information about the element - (BOOL)isAccessibilityElement - (NSString *)accessibilitylabel - (UIAccessibilityTraits)accessibilityTraits - (CGRect)accessibilityFrame - (NSString *)accessibilityhint - (NSString *)accessibilityvalue

Common Accessibility Attributes - (BOOL)isAccessibilityElement Return YES to make VoiceOver see this element - (NSString *)accessibilitylabel A textual representation of the element

Accessibility Traits - (UIAccessibilityTraits)accessibilityTraits Defines behavior Bitmask of integers

Accessibility Traits Static Text Summary Element Image Button Starts Media Session Adjustable

Other Accessibility Attributes - (CGRect)accessibilityFrame The onscreen rectangle for the UI element - (NSString *)accessibilityvalue A dynamically changing value that describes the UI element - (NSString *)accessibilityhint A string that provides additional help

Adding Accessibility with IB Change simple accessibility values accessibilitylabel accessibilitytraits isaccessibilityelement accessibilityhint

Demo Introduction to iphone Accessibility

What You ll Learn UIAccessibility Protocol Accessibility Attributes Adding Accessibility in Code Accessibility Containers Accessibility Actions VoiceOver-specific API Best Practices Apps for users with disabilities

Adding Accessibility in Code If accessibility values don t change - (void)awakefromnib {... UIControl *control = [[UIControl alloc] initwithframe:frame]; control.isaccessibilityelement = YES; control.accessibilitylabel = @"Play"; [window addsubview:control]; }...

Adding Accessibility in Code If accessibility values change @implementation MyTemperatureView - (BOOL)isAccessibilityElement { } return YES; - (NSString *)accessibilitylabel { } return @"Current Temperature"; - (NSString *)accessibilityvalue { } return [cityweather currenttemperatureasstring]; @end

Notifications Tell VoiceOver something happened UIAccessibilityPostNotification( UIAccessibilityScreenChangedNotification, nil); UIAccessibilityPostNotification( UIAccessibilityLayoutChangedNotification, nil);

Notifications Tell VoiceOver something happened UIAccessibilityPostNotification( UIAccessibilityAnnouncementNotification, @"89 degrees east");

Demo Setting Accessibility Attributes

What You ll Learn UIAccessibility Protocol Accessibility Attributes Accessibility Containers Accessibility Actions VoiceOver-specific API Best Practices Apps for users with disabilities

Accessibility Containers For custom views with multiple parts Returns accessibility sub-elements MonthView : UIView

Accessibility Containers For custom views with multiple parts Returns accessibility sub-elements October 14th

Accessibility Containers For custom views with multiple parts Returns accessibility sub-elements October 11th

Creating a Sub Element Make a UIAccessibilityElement UIAccessibilityElement October 14th { 200, 200, 50, 50 } Text Selected UIAccessibilityElement *daypart = [[UIAccessibilityElement alloc] initwithaccessibilitycontainer:monthview]; daypart.accessibilitylabel = @"October 14th"; daypart.accessibilityframe = CGRectMake(200, 200, 50, 50); daypart.accessibilitytraits = UIAccessibilityTraitSelected; [accessibilityelements addobject:daypart];

Accessibility Container Mirrors NSArray @implementation MonthView - (NSInteger)accessibilityElementCount { return [accessibilityelements count]; } - (id)accessibilityelementatindex:(nsinteger)index { return [accessibilityelements objectatindex:index] } - (NSInteger)indexOfAccessibilityElement:(id)element { return [accessibilityelements indexofobject:element] } @end

Demo Accessibility Container Protocol

What You ll Learn UIAccessibility Protocol Accessibility Attributes Accessibility Containers Accessibility Actions VoiceOver-specific API Best Practices Apps for users with disabilities

Accessibility Actions Adjustable elements @implementation PageControl - (UIAccessibilityTraits)accessibilityTraits { return [super accessibilitytraits] UIAccessibilityTraitAdjustable; } - (void)accessibilityincrement { [self movetonextpage]; } - (void)accessibilitydecrement { [self movetopreviouspage]; } @end

Accessibility Actions Scrollable elements @implementation CityView -(BOOL)accessibilityScroll:(UIAccessibilityScrollDirection)direction { if (direction == UIAccessibilityScrollDirectionLeft) { [self scrollleft]; UIAccessibilityPostNotification (UIAccessibilityPageScrolled, @"Showing Cupertino"); return YES; } else if (direction == UIAccessibilityScrollDirectionRight) { [self scrollright]; UIAccessibilityPostNotification (UIAccessibilityPageScrolled, @"Showing San Diego"); return YES; } } return NO;

Demo Accessibility Actions

What You ll Learn UIAccessibility Protocol Accessibility Attributes Accessibility Containers Accessibility Actions VoiceOver-specific API Best Practices Apps for users with disabilities

VoiceOver-specific API BOOL UIAccessibilityIsVoiceOverRunning() Is VoiceOver on? UIAccessibilityVoiceOverStatusChanged A notification to determine when VoiceOver is enabled.

VoiceOver-specific API - (BOOL)accessibilityElementIsFocused Is VoiceOver focused on this element? - (void)accessibilityelementdidbecomefocused Did VoiceOver focus on this element? - (void)accessibilityelementdidlosefocus Did VoiceOver focus leave this element?

Best Practices Use short, concise labels Good: Add city Bad: Adds a city to the list of cities

Best Practices Don t include the type information in the label Good: Remove city Bad: Remove city button

Best Practices Use localized strings for labels and hints VoiceOver works in over 30 languages

Best Practices With custom table view cells Only need to add accessibilitylabel If there are multiple strings, concatenate with commas @implementation NewsTableViewCell - (NSString *)accessibilitylabel { return [NSString stringwithformat:@"%@, %@", [self header], [self summary]]; } @end

Demo Accessible Bowling

What You ll Learn UIAccessibility Protocol Accessibility Attributes Accessibility Containers Accessibility Actions VoiceOver-specific API Best Practices Apps for users with disabilities

Apps for users with disabilities Accessibility features on ios has created a large user base Opportunity to develop apps addressing specific needs Digit-Eyes SayText omoby icansee iprompts Proloquo2Go

Summary Add accessibility Increases user base Heaps of praise Karmic improvement Apps for users with disabilities Incredible innovation awaits

More Information Documentation Accessibility Programming Guideline for ios Search on http://developer.apple.com/ for Accessibility UIAccessibility Protocol Reference Search on http://developer.apple.com/ for UIAccessibility VoiceOver User Manual http://support.apple.com/manuals/iphone