Each year at WWDC Xcode Santa brings us exciting new APIs to play with, and this year our accessibility present is Customized Accessibility Content. This API flew under the radar a little, I’m told this is because it’s so new there wasn’t even time for inclusion at WWDC. But this new feature helps to solve a difficult question when designing a VoiceOver interface — where is the balance between too much and too little content.

VoiceOver Noise

Customize Accessibility Content solves a common issue with presenting complex data to VoiceOver. Present too much and you’ll add noise and make your app hard…


How to Avoid Common Accessibility Issues in iOS apps

hand holding phone with teal screen, against blue background with various phone icons
hand holding phone with teal screen, against blue background with various phone icons

Accessibility is usability.

Accessibility isn’t just about making our apps work for people with disabilities, but allowing all our customers to experience our apps in the way that is most comfortable for them. Ensuring all your app’s content is included in a scroll view means we can guarantee the content can be accessed, regardless of the size of your customer’s screen. But this also means your content can be dynamic without worrying if it will still fit, and allows the content to scale. …


Photo by Zan on Unsplash

Attributed accessibility labels are an incredible tool for making some next-level accessible experiences. They let you tell VoiceOver not just what to speak, but how to say it too.

Using the accessibilityAttributedLabel property you can provide an NSAttributedString to VoiceOver, much the same way you would provide an NSAttributedString to a label’s attributedText property to display a string with an underline or character colour for example. The difference here is that all of our attributes are instructions for VoiceOver.

In the below example, we’re adding a pitch change to the word ‘best’ where in displayed text we might add a…


A good accessibility label lets your customer know exactly what a control does in as few words as possible, without having to rely on implied context.

Don’t Add the Element Type

iOS already knows your button is a button and your image is an image, it does this using an accessibility trait. If you label your button as ‘Play button’ your VoiceOver customers will hear ‘Play button. Button.’

Keep it Succinct

Don’t frustrate your customer by adding too much information to your labels. There’s no need to describe photos in detail for example, just let people know what the subject of the photo is. Take another look at…


There are a few circumstances when you’ll want to set your own accessibility label, such as…

  1. An interactive element that you haven’t given a text value to, such as an image button.
  2. An interactive element with a long visual label.
  3. An interactive element with a short visual label that takes context from your design.
  4. A control or view you have created yourself or built by combining elements.
  5. Images of text.

Elements Without a text value

Take the controls for a music player as an example. Below is a screenshot of the controls for Spotify’s music player, each icon is a button. They’re all visual, but…


Photo by Émile Perron on Unsplash

This blog was inspired by Jeff Watkins’ series of blogs on UIButton. UIButton is a fundamental part of building interfaces on iOS. So much so, that it probably doesn’t get the love it deserves. But it’s also really powerful and customisable when used correctly.

Accessibility labels on iOS I feel are very similar. They’re fundamental to how accessibility works on iOS, yet I think they suffer from a few PR issues. Firstly, Apple has done such a good job with them that we often don’t give the humble accessibility label the consideration it deserves, instead relying on the Apple default…


This blog is not click-bait, but I sort of hope people don’t necessarily read this post. I hope the title is enough. Maybe it shows up as they’re scrolling through twitter, and the title sticks in their subconscious. Maybe it shows up in a google search. I hope that the title is enough to dispel a myth around software that I had for some time.

Last week, respected indie iOS engineers David Smith and Marco Arment released the latest episode of their bi-weekly app development podcast Under the Radar covering their adventures in Advanced Math. This podcast meant a lot…


This post was originally published on mobilea11y.com. Visit Mobile A11y for more mobile accessibility tools and techniques.

Live Regions are one of my favourite accessibility features on Android. They’re a super simple solution to a common accessibility problem that people with visual impairments can stumble across.

Say you have a game app, really any type of game. Your user interacts with the play area, and as they do, their score increases or decreases depending on your customer’s actions. In this example, the score display is separate to the element your customer is interacting with. …


For a while now I’ve been looking at possibilities for automated accessibility testing on iOS. Unfortunately, I’ve not found any option so far that I’m happy with. I am a big fan of Apple’s XCUI Test framework. Although it has its limitations, I believe there’s scope for creating valid accessibility tests using this framework. Over the last few months I’ve been trying things out, and here’s what I’ve come up with.

These tests are all part of an open source library I created called A11yUITests, available on GitHub. You can pull this library in using Cocoapods and use these tests…


Accessibility is important.

We can take that as a given. But as iOS devs, we’re not always sure how to make the most of the accessibility tools that Apple has provided us.

We’re lucky as iOS developers that we work on such a forward-thinking accessibility platform. Many people consider Apple’s focus on accessibility for iOS as the driver for other technology vendors to include accessibility features as standard. To the point that we now consider accessibility an expected part of any digital platform. This was not the case before 2009.

In Shelly Brisbin’s fantastic audio documentary 36 Seconds that Changed…

Rob Whitaker

iOS Engineer at Capital One. Author, Developing Inclusive Mobile Apps, Apress. https://amzn.to/3aNRQ6d

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store