Implementing VoiceOver Support for iOS App

NOVASOLUTIONS.TECHNOLOGY is engaged in the development, support and maintenance of iOS, Android, PWA mobile applications. We have extensive experience and expertise in publishing mobile applications in popular markets like Google Play, App Store, Amazon, AppGallery and others.
Development and support of all types of mobile applications:
Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1 servicesAll 1735 services
Implementing VoiceOver Support for iOS App
Medium
~3-5 business days
FAQ
Our competencies:
Development stages
Latest works
  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1050
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    445

Implementing VoiceOver Support for iOS Applications

VoiceOver is a screen reader built into iOS. Users interact with the application through swipes and taps, while the system reads the screen content aloud. If your application doesn't support VoiceOver, a visually impaired user cannot use it at all — not "inconvenient", but literally "cannot".

App Store review doesn't check accessibility automatically, but applications for government, healthcare, and education sectors often require WCAG 2.1 / Section 508 compliance by contract.

What Breaks Without Proper Implementation

Custom UIView and SwiftUI View

Standard UIButton, UILabel, UITextField — VoiceOver understands them out of the box. Custom UIView with content drawn on CALayer — no. VoiceOver sees the entire custom view as one element without description.

For UIKit: isAccessibilityElement = true, accessibilityLabel, accessibilityHint, accessibilityTraits. accessibilityLabel — what this is ("Add to Cart button"). accessibilityHint — what happens on activation ("Adds item to cart, proceeds to checkout"). accessibilityTraits — element type (.button, .link, .image, .header, .selected).

For SwiftUI: modifiers .accessibilityLabel(), .accessibilityHint(), .accessibilityAddTraits(). If multiple nested Views need to be combined into one accessible element — .accessibilityElement(children: .combine) or .accessibilityElement(children: .ignore) + explicit label.

Images Without Alt Text

UIImageView with isAccessibilityElement = false (default) — VoiceOver skips it. Decorative images — correct. Meaningful ones — no, needs accessibilityLabel. Icons in buttons: if UIButton contains only UIImageView without text — needs accessibilityLabel on the button, otherwise VoiceOver reads the filename or stays silent.

Focus Order

VoiceOver traverses elements by accessibilityActivationPoint — usually the frame center. For complex layouts (overlays, absolute positioning in SwiftUI, custom containers), order can be chaotic. Fixed via accessibilityElements on parent container — array in correct order:

override var accessibilityElements: [Any]? {
    get { [titleLabel, priceLabel, addButton] }
    set { }
}

In SwiftUI — .accessibilitySortPriority() to manage order.

Modal Screens and Custom Overlays

UIAlertController — VoiceOver focuses automatically. Custom UIView overlay on top of content — no. Need UIAccessibility.post(notification: .screenChanged, argument: firstElement) to move focus to the first element of overlay. On closing — post(notification: .screenChanged, argument: triggerButton) to return focus to the button that opened the overlay.

accessibilityViewIsModal = true on overlay container — hides background content from VoiceOver. Without this, user can swipe "through" the overlay to background content.

How We Conduct Audit and Implementation

We enable VoiceOver (Cmd+F5 in Simulator or triple-click Home/Side Button on device) and go through all key flows: onboarding, main screen, primary actions (checkout, send message, play media).

We identify: elements without labels, incorrect focus order, unreachable elements, modal overlays without focus management.

Tools: Accessibility Inspector (Xcode) — checks contrast, finds elements without labels without running the app. XCTest with XCUIAccessibilityAudit (iOS 17+) — automated audit in UI tests.

We prioritize fixes: navigation and key CTAs first, then lists and forms, then media content.

Timeframe: 3-5 days for medium-scale application. Cost depends on number of screens and proportion of custom components.