Tips and tricks to build accessible iOS apps

#365DaysIOSAccessibility

RSS Feed

#365DaysIOSAccessibility

RSS Feed

A year-long journey exploring iOS accessibility, one day at a time. Each post shares practical insights, tips, and techniques to make your iOS apps more accessible.

Manual testing is crucial. And therefore, reducing friction to let you start your testing process can be a huge help. Selecting some accessibility shortcuts will do that, putting most of iOS' accessibility features at a triple-click of a button.

This is my favorite way of testing VoiceOver. Pick a flow in your app. Turn VoiceOver on. Triple tap with three fingers on the screen to enable Screen Curtain. The screen goes off but you can still navigate your device with VoiceOver.

UINotificationFeedbackGenerator has a “success” feedback type. Consider using it when a task was performed successfully together with any other visuals or sound. The use of multiple modes just makes it easier for everyone to understand your app.

You can indicate that an error occurred using haptic feedback. It can be useful for long-running tasks that fail, like page loads or downloads. But you can also use it as errors occur like Twitter does when reaching the character limit.

Second day of @a11yTO! And again, lots of talks with a ton of practical information. So here's a thread with some of my highlights. And very proud that @spotifydesign was one of the sponsors! #a11yTOconf

Today and tomorrow I'll be learning at @a11yTO. There haven't been any talks about iOS specifically. But I thought I'd share in a thread some of today's learnings that I think still apply when developing accessible apps for iOS. #a11yTOconf @a11yMel on continuous accessibility for quality at scale and reducing risks. Measure progress, but focus on people. When a measure becomes a target, it ceases to be a good measure. Accessibility is good for business but great for users. @annaecook talked about annotating designs for accessibility. Loved that she thinks of it as a communication and learning tool that can help divide the gap between design and development. I'd give it a go and see if it works for your team. Ann Mayer talked about writing accessible content. Technically compliant doesn't mean accessible. It is about being clear. The use of plain language principles, for example, is something that benefits everyone. @DavidOfYork has shown how deceptive patterns harm people with anxiety and panic disorders. If you spot any of these in your app, call them out and raise awareness. We all suffer eventually from anxiety, accessibility is for everyone. Michaela Peterhansl's practical guide for accessibility: Bring a11y to your daily work; you are not the only one responsible; ask questions; and find the people you can team-up with. "Don't forget: You can't do it alone", "Change is slow". @DDame on how to get stakeholders to invest in accessibility through storytelling and data: I may have a disability, but my money doesn't. Do we want to exclude users? Offer them a bad experience? No. We will all be disabled one day. Niki Ramesh gave useful tips to help you engage with a great a11y champions network. "Accessibility is not one person's job". Start informal/small, scale over time. Find representation across teams. Community, education, and recognition. @ShellELittle talked about hiring accessible designers but touched on some points that apply to anyone working on accessibility. It can't be done by one person or you risk burnout. Jennifer Payne on the importance of user research for building accessible products. Listen to users with disabilities. "Unless we consciously include, we unconsciously exclude". @svinkle showed how important it is to shift accessibility to the left (early in the process) so you get more voices involved through ideation, prototyping, and design. And remember to prioritize progress over perfection.

Haptics helps you signal important information in multiple modes. For example, you can use a UINotificationFeedbackGenerator to reinforce some "warning" feedback. Twitter uses this when you are running out of characters when composing a tweet.

Classic Invert reverses the colors of the display. But there's also Smart Invert. To support it, for avoiding images and media from being inverted, you just have to set accessibilityIgnoresInvertColors to true, for these elements. A quick win!

Have you used Voice Control? It feels like magic! But it would be cool if you could have an easier time guessing the name of a button without the “Show names” command. We can do that! Meet accessibilityUserInputLabels. https://developer.apple.com/documentation/objectivec/nsobject-swift.class/accessibilityuserinputlabels

Your iconography should support Bold Text too. One way of doing it is by creating custom symbols (and specifying weights for it) to work with them as you would with regular SF Symbols. How Creating custom symbols: https://developer.apple.com/videos/play/wwdc2021/10250/

If the user has Bold Text enabled, it will just work if you are using fonts based on text styles. If you have your own styles, or you are using a non-system font, you'll need to provide the bolder version of the font when the setting is on.

In iOS' Settings you can specify your preference to use bold text. This can be checked in code in a couple ways: 1. isBoldTextEnabled in UIAccessibility: https://developer.apple.com/documentation/uikit/uiaccessibility/isboldtextenabled 2. legibilityWeight from UITraitCollection: https://developer.apple.com/documentation/uikit/uitraitcollection/legibilityweight

Some animations can be a lot for some people. They may opt to reduce motion in Settings. You can know by checking isReduceMotionEnabled. You’ll immediately see that the system’s animations are much more subtle. The weather app is a great example.

Check isReduceTransparencyEnabled to lower transparency. A great example is Spotlight. Not only transparency is removed but it keeps the main color of the background, it feels personalized and contextual but reduces noise and improves contrast.

Today I want to share something I use a lot. You can convert any article into a “podcast” by enabling Speak Screen in Accessibility Settings, switching to Safari’s Reader Mode and swiping down with two fingers from the top of the screen. I think it is a good example of how if we all knew more about how to use the assistive tech available in iOS, we would find ourselves using more of them, more often, exemplifying quite well that accessibility benefits everyone.

Showing 76-90 of 230 posts

Special thanks to

Quintin Balsdon

for helping extract the content from the original Twitter posts.

Created in Swift with Ignite.

Supporting Swift for Swifts