Under the Radar

132: Accessibility


00:00:00   Welcome to Under the Radar, a show about independent iOS app development.

00:00:04   I'm Marco Arment.

00:00:05   And I'm David Smith.

00:00:06   Under the Radar is never longer than 30 minutes, so let's get started.

00:00:10   Today what we want to talk about is accessibility.

00:00:14   If you remember from our Q&A episode a couple weeks ago,

00:00:17   we had a very brief discussion about accessibility,

00:00:21   but I think it's a topic that deserves a much broader discussion

00:00:24   than the few minutes you were able to give it inside of that.

00:00:27   It turns out also that this week has National Global Accessibility Awareness Day, I think.

00:00:35   I don't typically get into these kind of awareness days,

00:00:39   but it's just coincided well, and it seemed a good thing to talk about.

00:00:44   Because I think accessibility is a topic that is...

00:00:49   It's an interesting intersection between something very...

00:00:55   It's a very personal side of development,

00:00:57   because it tends to interact with people at a level that is different

00:01:02   than just our normal development.

00:01:04   And I think as a result, accessibility can often become something

00:01:07   that you can become very emotional about, or very...

00:01:09   It takes a different level of importance than a lot of things.

00:01:13   But before I dive into a bit more of what accessibility, the specifics of it,

00:01:17   I think it probably makes sense to have a bit of an overview

00:01:20   about what it is that we mean when we talk about accessibility.

00:01:23   And in general, I would say it's best to think about accessibility

00:01:28   as methods of development that make your app usable by specific communities

00:01:36   within your user base.

00:01:37   And that can take a lot of different uses, take a lot of different paths,

00:01:42   depending on if there's different impairments that you may have to be working around,

00:01:45   or to consider.

00:01:47   But in general, accessibility and usability are one and the same.

00:01:52   There are certain things that we might do in our application to make it usable,

00:01:56   just for general usability with our general population who uses our application.

00:02:00   And then accessibility, I think, is the extreme versions of those,

00:02:05   where we have to make it usable by people who don't have all of the affordances

00:02:10   that a typical user might have.

00:02:12   And so these often get into things like visual impairments,

00:02:15   physical impairments, auditory impairments.

00:02:17   There's a variety of things that could make our app less usable for somebody.

00:02:21   And so accessibility is about making it work for those users.

00:02:26   We often tend to think of accessibility as something that's for other people,

00:02:31   something that is for people who, "Well, we don't know anybody like that

00:02:34   because we're all young, able-bodied developers," whatever.

00:02:37   But the reality is almost everybody will use some kind of accessibility feature

00:02:41   sometime in their lives.

00:02:43   The most common example is text sizing, making text larger as you get older

00:02:49   and as your eyes get worse, because that's just how our bodies work.

00:02:52   And so it's good to think of accessibility not as a special accommodation

00:02:59   for other people, but as a collection of features, tools, and design considerations

00:03:06   that make the app usable for as many people as possible.

00:03:11   Yeah, and I think that, too, it's the powerful thing of --

00:03:14   I remember I used to think of accessibility as this --

00:03:18   it's like there's this thing for other people that I do for them,

00:03:22   which is a really kind of entitled, privileged way to see it.

00:03:27   It's like, "Oh, I'm being so kind to this other community."

00:03:30   But I'm very glad that I think over time I've developed that into a much more mature,

00:03:36   actual understanding that accessibility is something that is for everybody.

00:03:41   It is most beneficial and most impactful in special communities,

00:03:45   but it just makes my app better for everybody.

00:03:48   And I think about the last time I went and had my eyes dilated

00:03:53   when I was having an eye exam, and suddenly I need to crank dynamic type

00:03:58   all the way up to see my phone, and all of a sudden it's like,

00:04:02   "Right, yeah, this impacts everybody."

00:04:05   It impacts everybody to a different degree, but it's the same affordances

00:04:09   and the same benefits that apply to everybody.

00:04:12   Having that change in mindset that just makes your app better

00:04:17   and more accessible for everybody,

00:04:20   it changes the degree in which I was motivated to think about it.

00:04:24   And I think it was also just so useful to change my --

00:04:28   it's like this just as a person, that was a really useful thing.

00:04:32   Any time you can get away from that kind of others versus yourself mindset,

00:04:38   it's like, "No, this is just part of development because this is for everybody."

00:04:41   All of my users benefit from this.

00:04:44   It reminds me in a funny way of all of the episodes under the radar have a transcript.

00:04:50   If you look in your -- wherever you're listening to this now, in the show notes,

00:04:53   the top link is "episode transcript," and that is there in many ways

00:04:57   for people who can't hear the episode.

00:05:00   If you have auditory impairments, you may not be able to listen to us speak,

00:05:04   and so podcasts can be very inaccessible to you.

00:05:07   But if you have a transcript, you can read it if you're able to read.

00:05:10   But it also has benefits for people who might just want to quickly browse something,

00:05:17   if you want to search for something later.

00:05:19   There's a tremendous number of other benefits that can come from something

00:05:22   that is ostensibly an accessibility feature

00:05:25   or something that is more particularly targeted, but it benefits everybody.

00:05:29   And because it benefits everybody, it's also just smart business

00:05:33   to design your apps to maximize accessibility.

00:05:36   Because as you mentioned, it is kind of an extension of usability,

00:05:40   and no one questions the value of good usability in like,

00:05:44   "Oh, if you want your app to succeed, you should make it as usable as possible."

00:05:48   That seems universally agreed upon.

00:05:50   Accessibility is part of that, and yet accessibility kind of gets low priority

00:05:55   or people don't talk about it as much.

00:05:58   And I get that. I have been there.

00:06:01   I have frequently in my career, I have shipped accessibility problems.

00:06:06   I have shipped unlabeled voiceover buttons and stuff like that,

00:06:10   or I've broken accessibility because I forgot to test it when I moved a view around or something.

00:06:15   We've all made these mistakes, but I think it's important to keep it in mind more.

00:06:23   And if you have any kind of testing process, any kind of formalized checklist

00:06:27   or anything like that, to make it a part of that.

00:06:30   And that will help you avoid shipping accessibility problems.

00:06:34   Yeah. And I think too, probably to wrap up the overview,

00:06:37   is to say that why should you development?

00:06:39   Like if I was trying to convince somebody why making accessibility

00:06:42   a big part of their development process.

00:06:44   There's two main reasons for it.

00:06:46   I think there's the first, which is the more just general,

00:06:50   it's a good thing at a human level to make your apps very usable,

00:06:53   which is a good general thing.

00:06:55   But more specifically, it's good business.

00:06:58   It's in the same way that localizing your application

00:07:01   makes your app usable to broader communities,

00:07:05   which allows you to make more money or have a more sustainable business

00:07:09   because you have more users.

00:07:11   Accessibility is the same thing, where you open up your app to be usable

00:07:16   by these other communities that then allows you to broaden your user base,

00:07:20   which is just good business.

00:07:22   And thirdly, it's also just, Apple really likes accessibility,

00:07:26   and they care a lot about it.

00:07:28   And it is something that you will hear Apple talk about many times.

00:07:32   They spend a tremendous amount of effort,

00:07:34   clearly on the engineering side,

00:07:36   making sure that the tooling and abilities that we have

00:07:40   on the accessibility side are very robust.

00:07:42   And so doing things that Apple cares about is going to benefit you

00:07:46   in terms of featuring, in terms of your just general being a good member

00:07:52   of that community and having the knock-on benefits that that brings with it.

00:07:56   It's just a good business decision as well as a good human decision.

00:08:00   We are sponsored this week by Linode.

00:08:03   With Linode, you have access to a suite of powerful hosting options

00:08:06   with pricing starting at just $5 a month.

00:08:08   You can be up and running with your own virtual server

00:08:10   in the Linode cloud in under a minute.

00:08:12   Linode has hundreds of thousands of customers,

00:08:15   all of whom are serviced by their friendly 24/7 support team.

00:08:18   You can email them, call them, even chat over IRC in the Linode community.

00:08:22   They know how important it is to get the help you want,

00:08:25   and Linode also has a suite of amazing guides and support documentation

00:08:29   to give you any references when you need it.

00:08:31   So, for instance, if you wanted to learn details about how to set up

00:08:34   your Linux server, Linode, you can even, if you search the web,

00:08:37   these are public. Anybody can see these documentation.

00:08:39   And I have frequently found when I've searched for some kind of,

00:08:42   like, you know, Linux help thing, oftentimes the best answer

00:08:45   and one of the top answers is a Linode document.

00:08:47   They really know what you need, and they're really great at explaining it.

00:08:50   And they have an intuitive control panel.

00:08:52   This allows you to deploy, boot, resize, snapshot,

00:08:55   and clone your virtual servers in just a few clicks.

00:08:58   And they also now have two-factor authentication to keep you safe.

00:09:01   So Linode has fantastic pricing options for every budget and every need.

00:09:05   Their plans start at one gig of RAM for just five dollars a month,

00:09:09   and they offer lots of other plans that go up from there,

00:09:11   including high memory plans, depending on what your needs are.

00:09:14   As listener of this show, sign up at linode.com/radar.

00:09:18   That will support us and give you $20 towards any Linode plan.

00:09:21   So on that base $5 plan, that's four months free.

00:09:24   And with a seven-day money-back guarantee, there's nothing to lose.

00:09:27   So go to linode.com/radar to learn more, sign up,

00:09:31   and take advantage of that $20 credit, or use promo code radar2018 at checkout.

00:09:36   Thank you so much to Linode for supporting the show.

00:09:39   So I think now that it's sort of the general overview to the side,

00:09:42   I think let's dive into some of the more specific types of accessibility

00:09:47   and probably even more over from the developer perspective,

00:09:50   some of the tools and abilities that we have as a result.

00:09:53   And I think the main area to start with probably are visual accessibility tools that we can use.

00:09:59   So visual impairments can come in all varieties.

00:10:02   They can go all the way to the extreme forms of things like blindness,

00:10:05   where a user is completely unable to view the interface that your app has,

00:10:11   to the more minor, to things like we were talking about,

00:10:15   where they have difficulty seeing things that are small,

00:10:18   they have difficulties around differentiating between colors or contrast,

00:10:23   and so you can run the gambit between those.

00:10:25   But in general, because our apps at their core are fundamentally visual things,

00:10:32   one of the key innovations of the iPhone was that it didn't have any buttons on the main screen,

00:10:39   which means that our entire app is functionally something that is visual,

00:10:43   that there's no tactile cues to it, or at least not intrinsically.

00:10:48   And so there's a variety of different things that we have to take advantage of.

00:10:52   And I think the first one and probably the biggest one that most people think about

00:10:55   when they think of visual accessibility is the voiceover system in iOS,

00:11:01   which if you've never used it, I highly recommend that you stop this episode now,

00:11:06   go turn it on, and just play with your iPhone for a little while,

00:11:10   because it is a fascinating alternative way to navigate an iPhone,

00:11:15   that you can do essentially everything that you currently do with your iPhone,

00:11:19   you can do without having--if you close your eyes and just swipe left and right

00:11:25   and then double-tap to select things,

00:11:27   you do a tremendous amount of capabilities of your iPhone without ever having to look at it.

00:11:33   And so voiceover is that system.

00:11:35   It's a system that is this alternative interface on top of the main interface,

00:11:40   and you'll see it visually with these little cues,

00:11:43   which obviously if you couldn't see them, they're not important,

00:11:46   but they're ways for us as developers at least to see what's happening,

00:11:50   where it's a way of navigating the screen hierarchically,

00:11:54   so you move from element to element to element,

00:11:58   and then rather than some of the--in a typical interface on the iOS,

00:12:04   there's typically direct input, so wherever you--

00:12:07   if you want to tap on a button, you have to find--

00:12:09   your finger has to be directly over that button.

00:12:12   What voiceover does is it takes that and adds a level of indirection

00:12:15   where you have a selection state and then a tap state, for example.

00:12:20   So you would swipe over until the button you want to select is selected,

00:12:25   and then you double-tap on the screen,

00:12:27   and so where you're swiping is irrelevant in voiceover,

00:12:30   and so it creates that level of indirection,

00:12:32   which then allows you to use it if you can't see the screen.

00:12:36   I would even say--go a little harder on this--

00:12:38   I would say actually learn voiceover.

00:12:41   Figure out the basics, which it sounds intimidating.

00:12:45   Trust me, it's not. It's really quite simple.

00:12:47   It's like swipe right to go to the next item in the sequence,

00:12:50   swipe left to go to the previous item in the sequence,

00:12:52   double-tap the screen to select something.

00:12:55   That's roughly all--that's the basics to all--

00:12:58   that's all you need to know to start this.

00:13:00   There are lots of other little tricks.

00:13:02   One thing the developers should make sure your apps work with

00:13:04   is if you present any kind of custom modals or sheets or anything like that,

00:13:09   you want to support the accessibility perform escape gesture,

00:13:13   which is two fingers on the screen, swipe left, right, left,

00:13:16   and it's kind of like a zigzag, like you're crossing out the current screen,

00:13:20   and that should dismiss or be like a cancel button

00:13:23   on any kind of modal or sheet and everything,

00:13:25   and that's something that the built-in stuff

00:13:27   does not make it incredibly easy to support that

00:13:30   if you don't know about it, but once you know about it,

00:13:32   it's pretty easy.

00:13:33   But I would say the basics of voiceover,

00:13:36   swipe right, swipe left, double-tap to select,

00:13:39   learn that, then actually cover your eyes

00:13:43   or look away from the screen and try to navigate your app

00:13:46   and try to actually use it and see,

00:13:48   does the sequence of these things make sense?

00:13:51   Are there things that are missing?

00:13:52   Are there states that you can get in that you can't get out of

00:13:55   because you can't leave the screen from voiceover

00:13:58   or you can't leave this mode?

00:14:00   Things like that are incredibly important

00:14:02   for just the basics of voiceover testing.

00:14:04   And voiceover also, not only does it serve visual impairments,

00:14:08   but the same kind of mechanic, the same system,

00:14:11   can also serve things like motor disabilities and things like that

00:14:14   because it's using these same APIs and everything.

00:14:16   So the voiceover accessibility API is the number one API

00:14:21   to try to support after probably dynamic type,

00:14:24   although ideally you shouldn't have to choose,

00:14:26   you should really be supporting both.

00:14:27   But those are the two big ones.

00:14:30   And really, it does not take much to teach yourself voiceover

00:14:35   enough to be able to go through your app

00:14:38   and just see if there's any major pain points.

00:14:40   And I would even extend that to say,

00:14:42   actually, if at all possible, seek out voiceover testers,

00:14:46   seek out people who are full-time voiceover users

00:14:49   on their phones as your beta testers.

00:14:52   I made tons of voiceover mistakes

00:14:54   until I had voiceover people on my betas,

00:14:56   and it made all the difference in the world.

00:14:58   I know how an interface should look.

00:15:01   I have a pretty good idea of how the app should be laid out visually.

00:15:05   But because I'm not a full-time voiceover user,

00:15:08   not only do I not run into those problems if they exist,

00:15:11   but I don't really have a good concept of what's good.

00:15:14   And so it's important to have full-time voiceover users,

00:15:17   if at all possible, testing your app and telling you,

00:15:20   not only if they see any problems,

00:15:22   but also what's good design, what's bad design?

00:15:25   What works, what's a pain,

00:15:27   what's more complicated than it needs to be?

00:15:29   One of the questions I had was,

00:15:31   when I was arranging my now-playing screen elements in voiceover,

00:15:36   and I thought it would make more sense

00:15:39   to have the most frequently used things come first

00:15:43   in the sequence of things that you're iterating through,

00:15:45   even though that's not how the screen is laid out.

00:15:48   If you just try to read the screen left to right, top to bottom,

00:15:51   that isn't how the screen is laid out.

00:15:53   The most frequent controls are on the bottom, actually.

00:15:55   So in the sequence of the naively ordered controls,

00:15:58   they would almost be last.

00:16:00   But I was like, "Don't you want play/pause first,

00:16:03   and skip forward second, and skip back third?"

00:16:06   Stuff like that.

00:16:07   And so I just asked my voiceover testers,

00:16:09   "Hey, would this be weird? Would this be unusual?

00:16:13   Would this be bad or off-putting to arrange these in a custom way?

00:16:17   Or is that a useful thing to do?"

00:16:20   Because I honestly don't know what's normal.

00:16:23   What would throw somebody off as being weird or unexpected,

00:16:26   versus what's a nice convenience.

00:16:29   And I got great feedback on stuff like that.

00:16:31   So anything you can do to have voiceover testers,

00:16:34   and this applies to all other types of accessibility APIs, too,

00:16:38   have testers that use different dynamic type sizes.

00:16:41   My dynamic type implementation in Overcast is still not perfect.

00:16:44   I only know that because people tell me,

00:16:46   because I have testers who actually use it and tell me.

00:16:48   So it's just incredibly valuable to have that kind of actual feedback,

00:16:52   because it is important for you as a developer to try to learn,

00:16:57   to test out your app in these different scenarios,

00:17:00   and learn the basics of voiceover so you can navigate it and stuff like that.

00:17:03   But you're never going to use it as much,

00:17:06   and find as much good and bad stuff about your implementation,

00:17:10   or have as much of a sensibility of what works and what doesn't,

00:17:13   as a full-time user of these technologies.

00:17:15   So if at all possible, involve people who use them in your testing.

00:17:18   And I'd say, too, one of my biggest recommendations

00:17:22   for anyone who is going to be at WWDC,

00:17:24   who has a ticket and is going to be inside,

00:17:26   is to make an appointment for the Accessibility Lab.

00:17:28   Yes.

00:17:29   Where typically, the way I've gone every year,

00:17:31   I always find a reason to go, even if I don't have a pressing reason,

00:17:34   because I learn so much from the experience,

00:17:37   because the way it's typically set up is they have a typically sighted user

00:17:41   and a non-typically sighted user,

00:17:43   someone who has a vision impairment of some kind from Apple,

00:17:47   who will sit down and they'll go through and use your app.

00:17:50   And you get to watch and take notes on how they use it,

00:17:55   what they see, what they're hearing,

00:17:57   the speed at which they're interacting with.

00:17:59   And that in-person experience, I found to be tremendously helpful

00:18:03   for understanding things that you wouldn't really understand otherwise.

00:18:07   I've learned a lot around how verbose I want to make my button

00:18:11   accessibility labels be, for example.

00:18:14   Spoiler, not.

00:18:16   Yeah, you get this, where they're like, "No, no, no,

00:18:19   the shortest amount of text possible.

00:18:21   I don't need to be having this big, long thing where,

00:18:24   so for a lot of my apps, it's like I'm displaying user data.

00:18:27   And so for a while, I would have these usability labels

00:18:31   that would be like, "Your steps on Thursday, May 17th, 2018,

00:18:36   were 10,163."

00:18:39   And she's like, "I don't need that. I know where I am in the app.

00:18:43   You can just say Thursday's steps, 10,383."

00:18:46   And that's all they wanted, because they're very used to,

00:18:51   they have a tremendous ability, you develop a tremendous ability

00:18:54   to know where you are in the hierarchy,

00:18:56   and they have to wait to listen to what's going on

00:19:01   before they can make their next action.

00:19:03   And so if you make those labels really long,

00:19:05   it's hard for them to navigate quickly.

00:19:07   Also, things like I learned from going to the accessibility lab

00:19:10   was like putting the most important information up front,

00:19:13   not at the end.

00:19:15   And so actually, I think what I do in my apps,

00:19:18   I think I say the number of steps first,

00:19:20   and then I say the date in certain circumstances,

00:19:23   because that's actually what they're interested in,

00:19:25   rather than the date.

00:19:27   Because once they have what they need,

00:19:29   they can move on or swipe to the next thing,

00:19:31   or if this is not the right thing.

00:19:33   But I highly recommend going and seeing that in person.

00:19:35   Or if you know somebody in person who has a vision impairment

00:19:38   and uses VoiceOver, it's tremendously effective.

00:19:41   Because at its core, VoiceOver is,

00:19:44   it's almost like painfully simple to implement on a developer side.

00:19:48   Every UI control in iOS has accessibility baked into it,

00:19:53   and most of what you're doing when you're making your app work well

00:19:57   with VoiceOver is making sure that you set accessibility labels

00:20:00   for everything so that when an element becomes the focused element,

00:20:04   that's what VoiceOver reads.

00:20:06   And so you need to have a description of what that is,

00:20:10   and then making sure that the hierarchy within your app makes sense,

00:20:14   so that as you swipe left and right,

00:20:16   it's logically moving through the hierarchy of your app,

00:20:20   rather than it's, in general, it does a pretty good job of doing that,

00:20:24   because it's sort of working its way along visually,

00:20:27   based on sort of X, Y coordinates,

00:20:29   but sometimes you need to override that

00:20:32   with an orientation that makes sense.

00:20:34   So as an example, like in Podometer++,

00:20:37   I have a bunch of bar graphs showing the history of your step counts.

00:20:42   In the default implementation, they would go from left to right,

00:20:47   which in my case would be oldest to newest,

00:20:50   whereas for an accessibility perspective, I flip that around.

00:20:53   And so the newest is the earliest one,

00:20:56   and then it works its way back in time,

00:20:58   even though visually that's flipped.

00:21:00   Things like that are basically all you have to do

00:21:04   to make good use of VoiceOver,

00:21:06   good labels and good hierarchy,

00:21:08   and you'll be like 99% there,

00:21:10   and then get feedback from users as best you can,

00:21:12   either in person, at the Accessibility Lab,

00:21:15   beta testing, wherever you can.

00:21:17   - And I can't stress enough how important it is to just try it.

00:21:20   Just try your app.

00:21:22   There's a few things you can do.

00:21:24   You can set the triple tap home button shortcut

00:21:27   to turn on and off VoiceOver.

00:21:29   And that's something I've found

00:21:30   after years of accidentally triggering that

00:21:33   when I meant to double click the home button

00:21:35   and hearing VoiceOver on in the middle of the world.

00:21:38   (laughs)

00:21:39   I turned that off because I learned

00:21:41   that you could just turn it on and off via Siri.

00:21:43   So you can just ask Siri, "Turn VoiceOver on.

00:21:45   "Turn VoiceOver off."

00:21:46   And it takes two seconds and no setup to do that,

00:21:49   so it's great.

00:21:51   And then just try it because usually when you mess up,

00:21:54   it's usually like, oh, you have some kind of custom button

00:21:57   that doesn't have the standard label text.

00:21:59   It has some other way to display what it is,

00:22:01   and you didn't put in a label.

00:22:02   So you scroll past it with VoiceOver,

00:22:04   and it just says, "Button, button."

00:22:06   And it's like, oh, god, it's like head-smackingly obvious.

00:22:10   It's embarrassing how easy it is to fix that.

00:22:12   It takes two seconds to add an Accessibility label,

00:22:15   and you fix this incredibly embarrassing Accessibility bug.

00:22:18   So just actually trying it and testing it

00:22:21   gets you so far, so much of the way there.

00:22:23   I'd also say if you don't know

00:22:25   or can't access any visually impaired users

00:22:28   who use this kind of stuff,

00:22:30   at least what everybody can do is look on YouTube

00:22:32   and try to look at videos of screen reader users

00:22:35   actually using their screen readers.

00:22:37   And that should give you some sense of how they navigate,

00:22:39   how quickly they navigate,

00:22:41   what kind of phrasing and wording you should use,

00:22:44   how brief or verbose should you be, things like that.

00:22:47   It's not a great solution, but it's better than nothing.

00:22:50   - The next kind of type of accessibility

00:22:52   that's probably worth talking about

00:22:53   is just around things like dynamic type,

00:22:56   which I think is a simpler topic,

00:22:58   where dynamic type is inside of iOS.

00:23:00   You can set the system text size queue in the Settings app

00:23:06   or then in the Accessibility app

00:23:08   if you want really, really, really big text.

00:23:11   And this is something that I've noticed

00:23:13   just in normal life is used incredibly widely.

00:23:19   Voiceover use is probably a relatively smaller part

00:23:22   of your user community.

00:23:24   Dynamic type is a very large proportion

00:23:26   of your user community.

00:23:28   And I think in general, dynamic type is pretty straightforward

00:23:30   because it just makes everything bigger.

00:23:33   And especially this has gotten easier

00:23:35   as we have to support multiple phone sizes,

00:23:38   that having more flexible, flowable layouts

00:23:40   is just something that I think in general

00:23:42   we kind of have to do because we have to make an app

00:23:45   that works on a 5S screen

00:23:48   all the way up to an 8+ screen.

00:23:51   And so you have to be flexible anyway.

00:23:54   And so dynamic type is just a way of saying,

00:23:56   "Make my text bigger, make my text smaller,

00:23:59   and as it gets bigger, making sure that it doesn't break,"

00:24:01   is functionally what dynamic type is.

00:24:03   And I think it's just a question

00:24:05   of making your app flexible in layout

00:24:07   so that when you crank up dynamic type,

00:24:10   if everything just becomes--

00:24:11   you get the first letter and the last letter

00:24:13   and then a bunch of ellipses in the middle

00:24:15   because everything's getting truncated.

00:24:17   You didn't do dynamic type right.

00:24:19   So it's something to try and to make sure

00:24:21   that your app responds reasonably well to

00:24:24   as well as opting into supporting it.

00:24:27   Some controls will automatically do this.

00:24:29   Like, certain UI label setups will just automatically use it,

00:24:33   which you want to make sure you know

00:24:35   that they're going to opt into.

00:24:36   But it also just--in general, you can ask the system

00:24:39   for what the dynamic type size is right now,

00:24:42   and even if you're doing custom rendering,

00:24:44   you could respond to it appropriately.

00:24:47   And lastly, I think there's some elements around accessibility

00:24:52   for things like colors and button shapes,

00:24:56   things that users who may have difficulty

00:24:58   with low-contrast displays.

00:25:01   And so it's just in general--

00:25:02   it's always the general rule that I try and keep to is

00:25:06   color is a powerful way to communicate something to my user,

00:25:10   but it shouldn't be the only way that I communicate with my user.

00:25:13   So if you have--if I need to differentiate something

00:25:18   by only with color, then I'm making an interface

00:25:23   that's going to be confusing to users who have difficulty

00:25:26   differentiating colors or similar impairments.

00:25:29   And in general, that's just probably bad design.

00:25:31   I mean, this came up a lot around the iOS 7 redesign,

00:25:35   where color became the thing that we used

00:25:37   to differentiate buttons from just text.

00:25:40   And so I think in general, I tend to prefer actually making buttons

00:25:44   with some other affordance to them,

00:25:46   whether that be a rounded rectangle around them

00:25:48   or some indication, maybe an underline,

00:25:51   to make it seem that this is something different,

00:25:53   that it isn't just the color that makes it different.

00:25:56   Finally, I think I'd like to end with a plea to Apple.

00:26:01   There is no way in the App Store for users of apps

00:26:06   or buyers or potential users of apps

00:26:08   to know whether an app has accessibility compatibility or not.

00:26:12   There's no way to know if an app has been tested for voiceover.

00:26:15   There's no way to know if it responds to dynamic type,

00:26:18   things like that.

00:26:19   And so if you are a user who uses these technologies,

00:26:21   who needs these technologies, you're taking a risk.

00:26:24   You have no way to know whether an app that you're interested in

00:26:27   possibly buying will work for you at all or not.

00:26:30   The App Review tests apps for other things like crashing,

00:26:33   things like that.

00:26:34   So people can be sure that you're downloading an app

00:26:36   that will work if you don't need these technologies.

00:26:39   If you do, you have no way to know.

00:26:41   It's almost as if you don't have App Review for yourself.

00:26:43   And I wish Apple would either test for the basic accessibility technologies

00:26:50   like dynamic type and voiceover during App Review

00:26:52   and actually reject apps if you didn't do it,

00:26:54   which would also save us from shipping embarrassing shortcomings,

00:26:57   either require that or allow developers to opt in,

00:27:01   to optionally have that testing applied to us

00:27:04   and display some kind of little icon in the App Store page

00:27:07   for our apps that we are accessible.

00:27:10   I wrote a blog post to this effect a couple years ago.

00:27:12   It didn't get anywhere yet, but I still would like that

00:27:16   to be considered by Apple because if you think about

00:27:20   the value of App Review for mainstream purposes,

00:27:24   this is a pretty big thing that it serves that same kind of goal,

00:27:27   like making sure, giving people the assurance that apps will work for them

00:27:33   in a basic way, I think that would go a long way in accessibility as well.

00:27:37   Oh, sure. I also love the thought of it being an added incentive

00:27:43   for developers to adopt accessibility in a robust way within their applications.

00:27:48   Exactly.

00:27:49   If there is an additional flag or gold star that you get in the App Store

00:27:55   as a result of doing it, all the better.

00:27:58   That just seems like that would be a wonderful win.

00:28:01   Thanks for listening, everybody, and we'll talk to you next week.

00:28:03   Bye.

00:28:05   [BLANK_AUDIO]