<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>IOS on Mobile A11y</title><link>https://mobilea11y.com/tags/ios/</link><description>Recent content in IOS on Mobile A11y</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>a11y@mobilea11y.com (Mobile A11y)</managingEditor><webMaster>a11y@mobilea11y.com (Mobile A11y)</webMaster><copyright>Email: [a11y@mobilea11y.com](mailto:a11y@mobilea11y.com).&lt;br&gt;&lt;a href="https://mobilea11y.com"&gt;Mobile A11y&lt;/a&gt; &amp;copy; 2026 by &lt;a href="https://www.linkedin.com/in/rob-whitaker/"&gt;Rob Whitaker&lt;/a&gt; is licensed under &lt;a href="https://creativecommons.org/licenses/by-nc/4.0/" target="_blank" rel="license noopener noreferrer"&gt;CC BY-NC 4.0&lt;/a&gt;&lt;img src="https://mirrors.creativecommons.org/presskit/icons/cc.svg" alt="" class="cc-icon"&gt;&lt;img src="https://mirrors.creativecommons.org/presskit/icons/by.svg" alt="" class="cc-icon"&gt;&lt;img src="https://mirrors.creativecommons.org/presskit/icons/nc.svg" alt="" class="cc-icon"&gt;</copyright><lastBuildDate>Sun, 12 Apr 2026 22:50:06 +0100</lastBuildDate><atom:link href="https://mobilea11y.com/tags/ios/index.xml" rel="self" type="application/rss+xml"/><item><title>Checking accessibility with SwiftUI Previews</title><link>https://mobilea11y.com/blog/swiftui-preview-testing/</link><pubDate>Sun, 12 Apr 2026 21:45:55 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/blog/swiftui-preview-testing/</guid><description>SwiftUI previews offer a fast, practical way to see the output of our view code. But did you know you can also use them to test accessibility-related UI changes including Dynamic Type, localisation, and system accessibility settings, all without needing a physical device.</description></item><item><title>No, SwiftUI is not “Accessible by default”</title><link>https://mobilea11y.com/blog/swiftui-not-accessible/</link><pubDate>Fri, 03 Apr 2026 12:41:50 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/blog/swiftui-not-accessible/</guid><description>&amp;quot;SwiftUI is accessible by default&amp;quot; is one of the most repeated misconceptions in iOS development. Here&amp;rsquo;s why that&amp;rsquo;s wrong and what you actually need to watch out for.</description></item><item><title>iOS Accessibility Values</title><link>https://mobilea11y.com/blog/accessibility-values/</link><pubDate>Sun, 19 Jun 2022 10:30:56 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/blog/accessibility-values/</guid><description>&lt;p&gt;For iOS, Accessibility values are one of the building blocks of how Accessibility works on the platform, along with &lt;a href="https://mobilea11y.com/blog/traits/" &gt;traits&lt;/a&gt;, &lt;a href="https://mobilea11y.com/blog/ios-accessibility-labels/" target="_blank" rel="noreferrer"&gt;labels&lt;/a&gt;, hints, and showing/hiding elements. If you&amp;rsquo;re familiar with WCAG or web accessibility, accessibility values are the &lt;em&gt;value&lt;/em&gt; part of &lt;a href="https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html" target="_blank" rel="noreferrer"&gt;WCAG 4.1.2: Name, Role, Value&lt;/a&gt;.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Values
 &lt;div id="values" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#values" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;Not every element in your view will have a value - in fact, most won&amp;rsquo;t. Any element that &amp;lsquo;contains&amp;rsquo; some data, data that is not included in the element&amp;rsquo;s label requires an accessibility value to be set. If you&amp;rsquo;re using standard controls provided by Apple, these values will be set for you. But if you make something custom you must add a value where necessary, and if you&amp;rsquo;re extending a standard control, testing with VoiceOver is essential.&lt;/p&gt;</description></item><item><title>iOS UIKit Accessibility traits</title><link>https://mobilea11y.com/blog/traits/</link><pubDate>Fri, 13 Aug 2021 07:30:56 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/blog/traits/</guid><description>&lt;p&gt;Accessibility traits on iOS is the system by which assistive technologies know how to present your interface to your users. The exact experience will vary between assistive technologies, in some cases they may change the intonation of what VoiceOver reads, or add additional options for navigation, sometimes they will disable that assistive technology from accessing the element, or change how the assistive tech functions. They are the &amp;lsquo;Role&amp;rsquo; part of the fundamental rule of making something accessible to screen readers - &lt;a href="https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html" target="_blank" rel="noreferrer"&gt;WCAG&amp;rsquo;s 4.1.2: Name, Role, Value&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>iOS Custom Accessibility Actions</title><link>https://mobilea11y.com/blog/a11y-custom-actions/</link><pubDate>Sun, 01 Aug 2021 07:30:56 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/blog/a11y-custom-actions/</guid><description>&lt;p&gt;When testing your app with VoiceOver or Switch Control, a common test is to ensure you can reach every interactive element on screen. If these assistive technologies can&amp;rsquo;t focus all of your buttons how will your customers be able to interact fully with your app? Except there are times when hiding buttons from your assistive technology users is the better choice. Consider an app with a table view that has many repeating interactive elements - this could be a social media app where &amp;rsquo;like, share, reply&amp;rsquo; etc is repeated for each post. Or perhaps an e-commerce app with &amp;lsquo;wishlist, buy now, add to basket&amp;rsquo; are repeated for each item. Visually these buttons won&amp;rsquo;t interrupt your users skimming the list of content, but for VoiceOver or Switch Control users, they will have to visit each one for every item on the screen. This is going to make navigating your app long and tedious, an means your users are more likely to drop out.&lt;/p&gt;</description></item><item><title>Quick Win - Start UI Testing</title><link>https://mobilea11y.com/quick-wins/ui-testing/</link><pubDate>Wed, 03 Feb 2021 07:30:56 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/quick-wins/ui-testing/</guid><description>&lt;p&gt;I&amp;rsquo;ll admit, adding UI testing to an app that currently doesn&amp;rsquo;t have it included is probably stretching the definition of quick win, but the aim here isn&amp;rsquo;t 100% coverage - not right away anyway. Start small and add to your test suite as you gain confidence. Even a small suite of crucial happy-path UI tests will help to ensure and persist accessibility in your app. And the more you get comfortable with UI tests the more accessible your apps will become, because an app that is easy to test is also great for accessibility.&lt;/p&gt;</description></item><item><title>Quick Win - Support Dark Mode</title><link>https://mobilea11y.com/quick-wins/dark-mode/</link><pubDate>Thu, 28 Jan 2021 07:30:56 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/quick-wins/dark-mode/</guid><description>&lt;p&gt;Many people don&amp;rsquo;t realise dark mode is an accessibility feature. It&amp;rsquo;s often just considered a nice to have, a cool extra feature that power users will love. But dark mode is also a valuable accessibility feature. Some types of visual impairment can make it painful to look at bright colours, or large blocks of white might wash over the black text. Some people with dyslexia or Irlen&amp;rsquo;s Syndrome can struggle to read black text on a white background. Like almost any accessibility feature, dark mode is about providing flexibility to your users so they can use your app in the way that is most comfortable to them.&lt;/p&gt;</description></item><item><title>Quick Win - Support Landscape</title><link>https://mobilea11y.com/quick-wins/landscape/</link><pubDate>Thu, 28 Jan 2021 07:30:56 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/quick-wins/landscape/</guid><description>&lt;p&gt;If you have a regulatory requirement to provide accessibility in your app (spoiler, you do) the chances are it will say you have a requirement to reach &lt;a href="https://www.w3.org/TR/WCAG21/" target="_blank" rel="noreferrer"&gt;WCAG AA&lt;/a&gt;. While this is likely meaningless to anyone other an accessibility professionals, in short it means you are providing the minimum level of accessibility features required to make your app usable by the majority of people.&lt;/p&gt;
&lt;p&gt;This post is about one such requirement, the jazzily titled &lt;a href="https://www.w3.org/WAI/WCAG21/Understanding/orientation.html" target="_blank" rel="noreferrer"&gt;Success Criterion 1.3.4&lt;/a&gt;. 1.3.4 is often overlooked, I&amp;rsquo;ve see it forgotten by accessibility auditors, overlooked by testers, removed by engineers, and ignored by designers. Yet this feature is one that is already enabled by default in your app. One that you have to choose to disable. For both Android and iOS when you create a new app, the app supports landscape mode out of the box, and all you need to do to continue supporting it is to build robust interfaces, and not disable it. Yet often one of the first things developers do when creating a new app is to disable landscape modes.&lt;/p&gt;</description></item><item><title>Quick Win - Image Descriptions</title><link>https://mobilea11y.com/quick-wins/image-descriptions/</link><pubDate>Tue, 19 Jan 2021 07:30:56 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/quick-wins/image-descriptions/</guid><description>&lt;p&gt;Images are a major part of our apps. They add meaning and interest, they give your app character and context. The adage is that a picture is worth a thousand words. But if you can&amp;rsquo;t see the image clearly, how do you know what those words are?&lt;/p&gt;
&lt;p&gt;If you aren&amp;rsquo;t providing image descriptions in your app many of your users will be missing out on the experience you&amp;rsquo;ve crafted. The result can be an app thats missing that spark an character, or worse an app thats just meaningless and unusable. Fortunately adding image descriptions is simple.&lt;/p&gt;</description></item><item><title>Quick Win - Text Contrast</title><link>https://mobilea11y.com/quick-wins/text-contrast/</link><pubDate>Tue, 19 Jan 2021 07:30:56 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/quick-wins/text-contrast/</guid><description>&lt;p&gt;How many shades of grey do you use in your app? OK, maybe thats a bit cruel towards designers, grey is a great colour, but the problem with grey is that it can be deceptively difficult to distinguish from a background. And this problem is not just limited to greys - lighter colours too can blend into the background. This effect can be heightened too for people who have blurred or obscured vision, or one of many forms of colour blindness.&lt;/p&gt;</description></item><item><title>iOS 14: Custom Accessibility Content</title><link>https://mobilea11y.com/blog/custom-accessibility-content/</link><pubDate>Mon, 29 Jun 2020 07:30:56 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/blog/custom-accessibility-content/</guid><description>&lt;p&gt;Each year at WWDC Xcode Santa brings us exciting new APIs to play with, and this year our accessibility present is &lt;a href="https://developer.apple.com/documentation/accessibility/customized_accessibility_content" target="_blank" rel="noreferrer"&gt;Customized Accessibility Content&lt;/a&gt;. This API flew under the radar a little, I’m told this is because it&amp;rsquo;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.&lt;/p&gt;</description></item><item><title>iOS Attributed Accessibility Labels</title><link>https://mobilea11y.com/blog/attributed-accessibility-labels/</link><pubDate>Sun, 03 May 2020 10:30:56 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/blog/attributed-accessibility-labels/</guid><description>&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Using the &lt;code&gt;accessibilityAttributedLabel&lt;/code&gt; property you can provide an &lt;code&gt;NSAttributedString&lt;/code&gt; to VoiceOver, much the same way you would provide an &lt;code&gt;NSAttributedString&lt;/code&gt; to a label&amp;rsquo;s &lt;code&gt;attributedText&lt;/code&gt; 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.&lt;/p&gt;</description></item><item><title>Writing Great iOS Accessibility Labels</title><link>https://mobilea11y.com/blog/writing-great-labels/</link><pubDate>Sun, 03 May 2020 09:30:56 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/blog/writing-great-labels/</guid><description>&lt;p&gt;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.&lt;/p&gt;

&lt;h3 class="relative group"&gt;Don&amp;rsquo;t Add the Element Type
 &lt;div id="dont-add-the-element-type" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#dont-add-the-element-type" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;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 &amp;lsquo;Play button&amp;rsquo; your VoiceOver customers will hear &amp;lsquo;Play button. Button.&amp;rsquo;&lt;/p&gt;</description></item><item><title>When to use Accessibility Labels</title><link>https://mobilea11y.com/blog/when-to-use-accessibility-labels/</link><pubDate>Sun, 03 May 2020 08:30:56 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/blog/when-to-use-accessibility-labels/</guid><description>&lt;p&gt;There&amp;rsquo;s a few circumstances when you&amp;rsquo;ll want to set your own accessibility label, such as&amp;hellip;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;An interactive element that you haven&amp;rsquo;t given a &lt;code&gt;text&lt;/code&gt; value to, such as an image button.&lt;/li&gt;
&lt;li&gt;An interactive element with a long visual label.&lt;/li&gt;
&lt;li&gt;An interactive element with a short visual label that takes context from your design.&lt;/li&gt;
&lt;li&gt;A control or view you have created yourself or built by combining elements.&lt;/li&gt;
&lt;li&gt;Images of text.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 class="relative group"&gt;Elements Without a text value
 &lt;div id="elements-without-a-text-value" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#elements-without-a-text-value" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;Take the controls for a music player as an example. Below is a screenshot of the controls for &lt;a href="https://apps.apple.com/gb/app/spotify-new-music-and-podcasts/id324684580" target="_blank" rel="noreferrer"&gt;Spotify&amp;rsquo;s&lt;/a&gt; music player, each icon is a button. They’re all visual, but not text. As they’re buttons they’re all available to assistive technology but without a text value, assistive technologies would not know how to present each button to your user. VoiceOver would likely read each as ‘button’ giving no indication what each button does. Voice Control users would have to refer to each button by a number based on the order it appears on the screen.&lt;/p&gt;</description></item><item><title>iOS Accessibility Labels</title><link>https://mobilea11y.com/blog/ios-accessibility-labels/</link><pubDate>Sun, 03 May 2020 07:30:56 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/blog/ios-accessibility-labels/</guid><description>&lt;p&gt;This blog was inspired by &lt;a href="https://twitter.com/jeffwatkins" target="_blank" rel="noreferrer"&gt;Jeff Watkins&amp;rsquo;&lt;/a&gt; &lt;a href="https://jeffwatkins.dev/articles/dressing-up-your-uibutton" target="_blank" rel="noreferrer"&gt;series&lt;/a&gt; of &lt;a href="https://jeffwatkins.dev/articles/constraints-and-uibutton" target="_blank" rel="noreferrer"&gt;blogs&lt;/a&gt; on &lt;a href="https://jeffwatkins.dev/articles/nobody-loves-uibutton" target="_blank" rel="noreferrer"&gt;UIButton&lt;/a&gt;. UIButton is a fundamental part of building interfaces on iOS. So much so, that it probably doesn&amp;rsquo;t get the love it deserves. But it&amp;rsquo;s also really powerful and customisable when used correctly.&lt;/p&gt;
&lt;p&gt;Accessibility labels on iOS I feel are very similar. They&amp;rsquo;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&amp;rsquo;t give the humble accessibility label the consideration it deserves, instead relying on the Apple default behaviour. Secondly, they&amp;rsquo;re just some text, right? Who can get excited about just a boring old label? Well, I&amp;rsquo;m sure this won&amp;rsquo;t surprise you, but I can.&lt;/p&gt;</description></item><item><title>Mobile A11y Talk: Accessibility in SwiftUI</title><link>https://mobilea11y.com/blog/swiftui-talk/</link><pubDate>Sun, 12 Apr 2020 07:30:56 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/blog/swiftui-talk/</guid><description>&lt;p&gt;I was supposed to be attending the 2020 &lt;a href="https://www.csun.edu/cod/conference" target="_blank" rel="noreferrer"&gt;CSUN Assistive Technology conference&lt;/a&gt; to present a couple of talks, unfortunately with COVID-19 starting to take hold at that time, I wasn&amp;rsquo;t able to attend. In lieu of attending I decided to record one of the talks I was scheduled to present on Accessibility in SwiftUI.&lt;/p&gt;
&lt;p&gt;SwiftUI is Apple&amp;rsquo;s new paradigm for creating user interfaces on Apple platforms, and it has a bunch of new approaches that really help create more accessible experiences. The talk is based on the &lt;a href="https://mobilea11y.com/guides/swiftui/" target="_blank" rel="noreferrer"&gt;series of SwiftUI guides&lt;/a&gt; available on this site.&lt;/p&gt;</description></item><item><title>A11y Box iOS</title><link>https://mobilea11y.com/blog/a11y-box-ios/</link><pubDate>Wed, 26 Feb 2020 07:30:56 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/blog/a11y-box-ios/</guid><description>&lt;p&gt;iOS&amp;rsquo; UIAccessibility API is huge. I like to think I know it pretty well, but I&amp;rsquo;m always being surprised by discovering features I previously had no idea about. Like many things on iOS, the documentation for UIAccessibility is not always complete, even for parts of the API that have been around for years.&lt;/p&gt;
&lt;p&gt;In an attempt to help spread the knowledge of some of the awesome things UIAccessibility is capable of, I&amp;rsquo;ve created &lt;a href="https://github.com/rwapp/A11y-Box-iOS" target="_blank" rel="noreferrer"&gt;A11y Box&lt;/a&gt; for iOS. It&amp;rsquo;s an open source project that covers every feature I know about on the UIAccessibility API, and a little more too.&lt;/p&gt;</description></item><item><title>A11yUITests: An XCUI Testing library for accessibility</title><link>https://mobilea11y.com/blog/a11yuitests/</link><pubDate>Tue, 17 Dec 2019 07:30:56 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/blog/a11yuitests/</guid><description>&lt;p&gt;&lt;a href="https://github.com/rwapp/A11yUITests" target="_blank" rel="noreferrer"&gt;A11yUITests&lt;/a&gt; is an extension to XCTestCase that adds tests for common accessibility issues that can be run as part of an XCUITest suite. I&amp;rsquo;ve written a detailed discussion of the &lt;a href="https://mobilea11y.com/guides/xcui/" target="_blank" rel="noreferrer"&gt;tests available&lt;/a&gt; if you&amp;rsquo;re interested in changing/implementing these tests yourself. Alternatively, follow this quick start guide.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Getting Started
 &lt;div id="getting-started" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#getting-started" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;

&lt;h3 class="relative group"&gt;Adding A11yUITests
 &lt;div id="adding-a11yuitests" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#adding-a11yuitests" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;I&amp;rsquo;m assuming you&amp;rsquo;re already familiar with cocoapods, if not, &lt;a href="https://cocoapods.org" target="_blank" rel="noreferrer"&gt;cocoapods.org&lt;/a&gt; has a good introduction. There is one minor difference here compared to most cocoapods, we&amp;rsquo;re not including this pod in our app, but our app&amp;rsquo;s test bundle. This means your podfile will look something like this.&lt;/p&gt;</description></item><item><title>XCUITests for accessibility</title><link>https://mobilea11y.com/guides/xcui/</link><pubDate>Mon, 16 Dec 2019 07:30:56 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/guides/xcui/</guid><description>&lt;p&gt;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.&lt;/p&gt;</description></item><item><title>SwiftUI Accessibility</title><link>https://mobilea11y.com/guides/swiftui/swiftui-accessibility/</link><pubDate>Wed, 06 Nov 2019 07:30:56 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/guides/swiftui/swiftui-accessibility/</guid><description>&lt;p&gt;&lt;a href="https://medium.com/capital-one-tech/baking-digital-inclusion-accessibility-into-your-mobile-apps-f0f5d03d9f49" target="_blank" rel="noreferrer"&gt;Accessibility is important&lt;/a&gt;. We can take that as a given. But as iOS devs we&amp;rsquo;re not always sure how to make the most of the accessibility tools that Apple have provided us.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;re lucky as iOS developers that we work on such a forward-thinking accessibility platform. Many people consider Apple&amp;rsquo;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.&lt;/p&gt;</description></item><item><title>SwiftUI Accessibility: Semantic Views</title><link>https://mobilea11y.com/guides/swiftui/swiftui-semantic-views/</link><pubDate>Tue, 29 Oct 2019 07:30:56 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/guides/swiftui/swiftui-semantic-views/</guid><description>&lt;p&gt;Semantic views are not new to SwiftUI, but changes in SwiftUI mean creating them is simple. Semantic views are not so much a language feature. They&amp;rsquo;re more a technique for manipulating the &lt;a href="https://rwapp.co.uk/2019/10/09/SwiftUI-AUI/" target="_blank" rel="noreferrer"&gt;accessible user interface&lt;/a&gt; and improving the experience for assistive technology users.&lt;/p&gt;

&lt;h2 class="relative group"&gt;A what view?
 &lt;div id="a-whatview" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#a-whatview" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;A semantic view is not one view, but a collection of views grouped together because they have meaning (or semantic) together. Take a look at this iOS table view cell from the files app.&lt;/p&gt;</description></item><item><title>SwiftUI Accessibility: User Settings</title><link>https://mobilea11y.com/guides/swiftui/swiftui-settings/</link><pubDate>Sun, 27 Oct 2019 07:30:56 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/guides/swiftui/swiftui-settings/</guid><description>&lt;p&gt;SwiftUI allows us to read environmental values that might affect how we want to present ­­our UI. Things like size classes and locale for example. We also get the ability to read some of the user&amp;rsquo;s chosen accessibility settings allowing us to make decisions that will best fit with your customer&amp;rsquo;s preference.&lt;/p&gt;

&lt;h2 class="relative group"&gt;Why?
 &lt;div id="why" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#why" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;Before we cover what these options are and how to detect them I think it&amp;rsquo;s important to briefly cover why we need to detect them. There&amp;rsquo;s a few dos and don&amp;rsquo;ts worth consideration.&lt;/p&gt;</description></item><item><title>SwiftUI Accessibility: Attributes</title><link>https://mobilea11y.com/guides/swiftui/swiftui-attributes/</link><pubDate>Fri, 18 Oct 2019 07:30:56 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/guides/swiftui/swiftui-attributes/</guid><description>&lt;p&gt;When a customer enables an assistive technology to navigate your app the interface that technology navigates isn&amp;rsquo;t exactly the same as the one visible on the screen. They&amp;rsquo;re navigating a modified version that iOS creates especially for assistive technology. This is known as the &lt;a href="https://rwapp.co.uk/2019/10/09/SwiftUI-AUI/" target="_blank" rel="noreferrer"&gt;accessibility tree or accessible user interface&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;iOS does an incredible job at creating the AUI for you from your SwiftUI code. We can help iOS in creating this by tweaking some element&amp;rsquo;s accessibility attributes. Setting some accessibility attributes through modifiers is a simple way to add a little more meaning and context for your assistive technology users.&lt;/p&gt;</description></item><item><title>SwiftUI Accessibility: Traits</title><link>https://mobilea11y.com/guides/swiftui/swiftui-traits/</link><pubDate>Fri, 18 Oct 2019 07:30:56 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/guides/swiftui/swiftui-traits/</guid><description>&lt;p&gt;Accessibility traits are a group of attributes on a SwiftUI element. They inform assistive technologies how to interact with the element or present it to your customer. Each element has a selection of default traits, but you might need to change these as you create your UI.&lt;/p&gt;
&lt;p&gt;In SwiftUI there are two modifiers to use for traits, &lt;code&gt;.accessibility(addTraits: )&lt;/code&gt; and &lt;code&gt;.accessibility(removeTraits: )&lt;/code&gt; which add or remove traits respectively. Each modifier takes as its argument either a single accessibility trait or a set of traits.&lt;/p&gt;</description></item><item><title>Podcast: iPhreaks - iOS Accessibility</title><link>https://mobilea11y.com/blog/iphreaks-podcast/</link><pubDate>Wed, 09 Oct 2019 07:30:56 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/blog/iphreaks-podcast/</guid><description>&lt;p&gt;I was asked to guest on the &lt;a href="https://iphreaksshow.com/275" target="_blank" rel="noreferrer"&gt;iPhreaks podcast&lt;/a&gt; to discuss iOS accessibility. We talked about why accessibility is important, how you can improve it in your apps, and some of the changes iOS 13 and SwiftUI bring.&lt;/p&gt;
&lt;p&gt;unfortunatley iPhreaks don&amp;rsquo;t provide a transcript, but they do provide a &lt;a href="https://iphreaksshow.com/275" target="_blank" rel="noreferrer"&gt;comprehensive write-up&lt;/a&gt; on their site.&lt;/p&gt;</description></item><item><title>SwiftUI Accessibility: Accessible User Interface</title><link>https://mobilea11y.com/guides/swiftui/swiftui-aui/</link><pubDate>Wed, 09 Oct 2019 07:30:56 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/guides/swiftui/swiftui-aui/</guid><description>&lt;p&gt;Take a look at your app. Notice the collection of buttons, text, images, and other controls you can see and interact with that make up your app’s user interface. When one of your customers navigates your app with Voice Control, Switch Control, VoiceOver, or any other assistive technology, this isn’t the interface they’re using. Instead, iOS creates a version of your interface for assistive technology to use. This interface is generally known as the accessibility tree. Apple often refers to this as your app’s Accessible User Interface. For brevity and consistency in this article, I’ll refer to it as the AUI&lt;/p&gt;</description></item><item><title>Mobile A11y Talk: Accessibility without the 'V' Word</title><link>https://mobilea11y.com/blog/without-the-v-word/</link><pubDate>Tue, 08 Oct 2019 07:30:56 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/blog/without-the-v-word/</guid><description>&lt;p&gt;I was honoured in 2019 to be able to give my first full conference talk at CodeMobile. I was then lucky enough to be able to repeat that talk at &lt;a href="https://www.meetup.com/NSLondon/" target="_blank" rel="noreferrer"&gt;NSLondon&lt;/a&gt;, &lt;a href="https://www.meetup.com/NSManchester/" target="_blank" rel="noreferrer"&gt;NSManchester&lt;/a&gt;, and &lt;a href="https://www.meetup.com/swmobile/" target="_blank" rel="noreferrer"&gt;SWMobile&lt;/a&gt; meetups.&lt;/p&gt;
&lt;p&gt;As an iOS developer, I know accessibility is important for a huge range of people. But at times I think I can treat it like an afterthought. Accessibility Without the ‘V’ Word covers a skill I think we as software engineers would benefit from developing - empathy towards our users. Remembering that everyone who uses our software is different, and have different abilities, experiences, and requirements. VoiceOver is an essential tool for many of our customers, but it&amp;rsquo;s not the only thing we should consider with accessibility.&lt;/p&gt;</description></item><item><title>SwiftUI Accessibility: Sort Priority</title><link>https://mobilea11y.com/guides/swiftui/swiftui-sort-priority/</link><pubDate>Wed, 02 Oct 2019 07:30:56 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/guides/swiftui/swiftui-sort-priority/</guid><description>&lt;p&gt;Assistive technology, such as VoiceOver, works in natural reading direction. In English, and most other languages, this means top left through to the bottom right. Mostly this is the right decision for assistive technology to make. This is the order anyone not using assistive technology would experience your app. Sometimes though, we make designs that don&amp;rsquo;t read in this way.
By using the &lt;code&gt;.accessibility(sortPriority: )&lt;/code&gt; modifier we can set the order in which assistive technology accesses elements. To achieve this, you must group elements in a stack (&lt;code&gt;HStack&lt;/code&gt;, &lt;code&gt;VStack&lt;/code&gt; or &lt;code&gt;ZStack&lt;/code&gt;). Then use the &lt;code&gt;.accessibilityElement(children: .contain)&lt;/code&gt; modifier. The higher the number we give to &lt;code&gt;.accessibility(sortPriority: )&lt;/code&gt;, the earlier VoiceOver will focus on the item. This means an element with a priority of 2 comes before priority 1, and so on.&lt;/p&gt;</description></item><item><title>SwiftUI Accessibility - Named Controls</title><link>https://mobilea11y.com/guides/swiftui/swiftui-controls/</link><pubDate>Thu, 26 Sep 2019 07:30:56 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/guides/swiftui/swiftui-controls/</guid><description>&lt;p&gt;One big accessibility improvement in SwiftUI comes in the form of named controls. Nearly all controls and some non-interactive views (&lt;a href="https://rwapp.co.uk/2019/09/11/SwiftUI-Images/" target="_blank" rel="noreferrer"&gt;see Images&lt;/a&gt;) can take a Text view as part of their view builder. The purpose of this is to tie the meaning to the control.&lt;/p&gt;
&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Toggle(isOn: $updates) {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Text(&amp;#34;Send me updates&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Imagine a UIKit layout with a UISwitch control. We&amp;rsquo;d most likely right align the switch, and provide a text label to the left. Something like this.&lt;/p&gt;</description></item><item><title>SwiftUI Accessibility: Dynamic Type</title><link>https://mobilea11y.com/guides/swiftui/swiftui-dynamic-type/</link><pubDate>Wed, 18 Sep 2019 07:30:56 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/guides/swiftui/swiftui-dynamic-type/</guid><description>&lt;p&gt;Like all accessibility features, Dynamic Type is about customisability. Many of your customers, and maybe even you, are using Dynamic Type without even considering it an accessibility feature. Dynamic type allows iOS users to set the text to a size that they find comfortable to read. This may mean making it a little larger so it’s easier to read for those of us who haven’t yet accepted we might need glasses. Or it could mean ramping it right up for people with low vision. Or taking the text size down for extra content and privacy.
Like many accessibility features on iOS, Dynamic Type support has been greatly improved in SwiftUI. There are a few things you should do (and not do) to make the most of it.&lt;/p&gt;</description></item><item><title>SwiftUI Accessibility: Images</title><link>https://mobilea11y.com/guides/swiftui/swiftui-images/</link><pubDate>Wed, 11 Sep 2019 07:30:56 +0000</pubDate><author>a11y@mobilea11y.com (Mobile A11y)</author><guid>https://mobilea11y.com/guides/swiftui/swiftui-images/</guid><description>&lt;p&gt;Images in SwiftUI are accessible by default. This is the opposite of what we&amp;rsquo;d experience in UIKit, where images are not accessible unless you set &lt;code&gt;isAccessibilityElement&lt;/code&gt; to true.&lt;/p&gt;
&lt;p&gt;Sometimes making images not accessible to VoiceOver is the right decision. Like when using a glyph as a redundant way of conveying meaning alongside text. An example of this would be displaying a warning triangle next to the text ‘Error’ or a tick next to ‘success’. If these images were accessible your VoiceOver users would hear the word ‘error’ twice and have to swipe between each one. This makes navigation longer and frustrating for your customer.&lt;/p&gt;</description></item></channel></rss>