We’re lucky that on iOS, recording the sound output of VoiceOver does not require extra steps. On macOS, we’re not so lucky, but we can use some tools to route audio and achieve the same result — no background noise in recordings!
In ‘Building an Accessibility Culture, One Step at a Time’, a presentation I recently gave at Swift Connection and SwiftLeeds, I spoke about “making accessibility accessible”. What does it mean, and how can we accomplish this?
I’ve spoken about the layering system in accessibility, with VoiceOver support being a good first step toward supporting Voice Control, and Voice Control in turn being a good start in supporting Full Keyboard Access. I stand by this! Things like labels, traits and values get you most of the way there for Voice Control. We optimize for Voice Control (and Full Keyboard Access) using input labels,…
At WWDC24, Apple introduced Swift Testing, which is a new way to write tests in Swift, practically replacing XCTest for unit tests. And it’s great. There are two sessions that give a great introduction to the new framework, and I recommend checking them out: Meet Swift Testing Go further with Swift Testing
I’ve been meaning to explore Assistive Access, a new accessibility feature announced a few days ahead of this year’s Global Accessibility Awareness Day. It has taken a bit of time, as it didn’t seem to be available in the simulator when the first beta came around, and then life happened… but I was finally able to set it up on my iPad and try it out, and I wanted to share my experience and findings…
Let’s take a look at how we can use macOS’s assistive technologies, like VoiceOver and Voice Control, as well as Hover Text, to more easily check some accessibility in the simulator, without having to deal with the (shortcomings of) the Accessibility Inspector. This will help you not having to always immediately run your app on an iOS device to test it… mostly. The experience on an iOS device…
We programmers have — most likely — all fixed a bunch of bugs in our time. That edge case that was overlooked. That out of bounds error that we thought could never occur. That early return being hit because that one thing could be nil after all. That crash because the constant that wouldn’t change… did in fact change. Not that I’m speaking from experience… why’d you ask? These things happen. And…
Recently, I’ve been working on making a custom tab bar in our app accessible. That is, make it work just like a native, out-of-the-box UITabBarController.
Dynamic Type lets you support different font sizes in your app, so that users can use a font size that works best for them — from smaller than the system default, to a whole bunch larger.