Every developer that has to do with any kind of frontend (web frontends, app development, you name it), knows that accessibility is important. Adding accessibility features to our products will open our products to millions of potential users. And we know that. That's the good part. And I'm sure, you already know the sad part of the story. The sad part is: A lot of developers don't include those features in their products. But don't get me wrong. I'm not blaming you. Sometimes it's the project management yelling at the developers that "there is no time for this". And sometimes (or maybe even a lot of times?) the reason is even simpler. It's the lack of knowledge about how to implement proper accessibility into the product. And yes, there are also a lot of devs out there who know all the details about this and do their best every single day to create awesome and accessible products. And if you are one of them, this series of blog posts might not be for you.
Hey, I'm Lars and I don't know how to implement reasonable accessibility into my apps. 🤦
It's true. I'm an iOS developer, but I have no clue, how to make use of Apple's accessibility APIs. It's a fact. But I'm willing to change that. I declared that as my personal goal for the next months. I want to learn how to do it. And if you are interested in that as well, come join me. I will write about the stuff I learned here on this blog. The first posts will be about the accessibility APIs in SwiftUI. But a big part of the app I'm working on during my day job is written using UIKit and of course, I'm eager to improve the accessibility of that app as well. So, as soon as I'm comfortable with the accessibility APIs of SwiftUI, I will also dive into the UIKit-accessibility-world.
Taking the first step
If you are still unsure what to do first, I would recommend activating "Voice Over" in your iOS settings and starting your app. Take a deep breath and then try to navigate and use your app. Here are the three most basic gestures you need to know to get a first impression:
- Swipe right -> Go to the next element
- Swipe left -> Go to the previous element
- double tap -> Trigger/Use selected element (like "tap button")
To learn more about all available gestures, check the official documentation. (Hopefully,) you will see, that navigating your app is, at least, not impossible. But if you haven't put any effort into making it more accessible, chances are, that it's not fun either. And if you are thinking "Well, using my app with VoiceOver is not a great experience, but it's not horrible, either", you should take it one step further. Maybe it's "not horrible", because you saw what you were doing! Do yourself a favor and go back in you app and activate VoiceOver. Now, with three fingers, quickly triple-tap the screen. No, you did not turn of your phone. You just turned of your screen. VoiceOver and the navigation are still active. Go ahead. Use your app now. 😉 To disable Screen Curtain (that's what this function is called), just triple-tap with three fingers again.
After you tried to use your app with "Voice Over", you may already suspect that you have a lot of work ahead of you, if you want to "fix" the accessibility of your app. But don't rush to your CTO and tell him/her that you need to lock yourself into a room for 3 months to learn about the accessibility APIs and instantly fix all the accessibility issues in your app. I'm pretty sure I know how your CTO would react to this, obviously very noble quest. 😉
As for me, here's how I'm going to handle it: After taking the first step (using my app with "Voice Over" and realizing, that it's not great at all), I will start learning the accessibility APIs in SwiftUI. And as soon as I know enough basics, I will start implementing it in our app. Just do it. In my opinion, there are some things that you don't have to discuss with your manager. Apps should be accessible. Period.
The fabulous Grace Hopper found the right words for this:
It's easier to ask forgiveness than it is to get permission.
So, let's make it happen. Join me on my journey and learn how to implement accessibility features in your iOS apps. 👍