Skip to main content

iOS Rule Repository

Use this repository to browse iOS accessibility rules and remediation guidance.

This repository groups iOS accessibility rules—VoiceOver, labeling, touch targets, and related mobile requirements—with pointers into deeper rule pages. Open it when an App Scanner or Native App Automation report cites an iOS finding and you want WCAG-aligned context and remediation next steps.

When to use this

Use this page when your Accessibility App or Native App Automation report points to an iOS issue and you need rule-level explanation or remediation guidance.

Priority iOS rule pages

Rule pageWCAGUse it for
Missing Accessibility Labels4.1.2Controls or meaningful content without accessible names
Touch Target Sizing2.5.5Controls that are too small or too tightly spaced

Quick Reference

Rule NameWCAGLevelImpactDescriptionDeep dive
Missing Accessibility Labels4.1.2ASeriousInteractive UI elements lack proper accessibility labels, hints, or descriptions that VoiceOver can announce to users. Set accessibilityLabel for meaningful descriptions and accessibilityHint for usage guidance. In SwiftUI use .accessibilityLabel() and .accessibilityHint(). For images, provide descriptive text. For buttons, ensure labels describe the action, not just visual appearance.Open rule
Color Contrast Issues1.4.3AASeriousText and background color combinations fail to meet WCAG minimum contrast ratios for visual accessibility. Use Apple's Color Contrast Calculator or online tools to verify 4.5:1 ratio for normal text, 3:1 for large text. Implement system colors that adapt to accessibility settings and test in high contrast mode. Consider using semantic colors like UIColor.label and UIColor.systemBackground.-
Touch Target Sizing2.5.5AAAModerateTouch target areas are smaller than Apple's recommended 44pt minimum size or lack adequate spacing from adjacent elements. Ensure interactive elements are at least 44x44 points by increasing button frame size or adding transparent padding. Use constraints to maintain minimum spacing between adjacent touchable elements. In SwiftUI, use .frame(minWidth: 44, minHeight: 44) and test on actual devices.Open rule
Assistive Technology Access4.1.2ASeriousUI components cannot be properly detected, focused, or activated by VoiceOver and other assistive technologies. Set isAccessibilityElement = true for custom views, ensure proper view hierarchy, and avoid blocking accessibility elements. Implement accessibilityActivate() for custom interactions and use accessibilityElements array to define focus order. Test navigation with VoiceOver gestures.-
Text Truncation Issues1.4.4AASeriousText content becomes truncated or cut off when users increase font sizes through iOS Dynamic Type settings. Use adjustsFontForContentSizeCategory = true on text elements and implement flexible layouts with priority constraints. Use UIFont.preferredFont(forTextStyle:) for scalable system fonts. Test with largest accessibility text sizes and avoid fixed height constraints on text containers.-
Accessibility Role Definition4.1.2AModerateUI elements lack appropriate accessibility traits that define their role, state, or behavior for assistive technology interaction. Set correct accessibilityTraits (.button, .link, .header, .selected, .disabled) and combine traits when needed. Update traits dynamically based on state changes. In SwiftUI, use .accessibilityAddTraits() and .accessibilityRemoveTraits() to ensure custom controls communicate their purpose clearly.-
Dynamic Type Support1.4.4AASeriousApp interface fails to properly scale or adapt when users enable larger text sizes in iOS accessibility settings. Enable Dynamic Type support using traitCollectionDidChange to respond to size changes and use Auto Layout with flexible constraints. Implement adjustsFontForContentSizeCategory on text elements. Test with Settings > Accessibility > Display & Text Size > Larger Text and design layouts that reflow gracefully.-
Accessibility Label Not Punctuated3.3.2ACriticalAccessibility labels are missing sentence-ending punctuation. End accessibility labels with a period, exclamation mark, or question mark so VoiceOver inserts a natural pause between elements. Without punctuation, the screen reader reads consecutive labels as a single run-on phrase, making it harder for users to distinguish where one element ends and the next begins.-
Missing Image Element Label1.1.1ACriticalAn accessibility label is an attribute assigned to UIImageView or UIButton elements that convey information graphically. This label gives a textual description of the graphic, making it accessible to users relying on screen readers. Add the accessibilityLabel property to all non-decorative UIImageView and UIButton elements containing images. For decorative images, set isAccessibilityElement = false to prevent unnecessary screen reader announcements.-
Missing Button Element Label1.3.1ACriticalButton elements within your app must be properly labeled and fully accessible to users relying on assistive technologies like screen readers. Add accessibilityLabel or button title text to all buttons so screen reader users understand what action each button performs. Ensure labels describe the action (e.g., "Submit form", "Close dialog") rather than just the visual appearance.-
Button Element Capitalisation Check3.1.6AAAMinorButton accessibility labels should begin with an uppercase letter and follow proper capitalization standards to improve readability and screen reader pronunciation. Use sentence case (e.g., "Save changes") instead of all caps or inconsistent capitalization. Avoid ALL CAPS as it may cause screen readers to read each letter individually. Follow iOS Human Interface Guidelines for consistent text formatting.-
Missing Checkbox Element Label1.3.1ACriticalCheckbox elements within your app must be properly labeled and fully accessible to users relying on assistive technologies like screen readers. Add accessibilityLabel to checkbox elements to describe what option is being selected or deselected. Combine with appropriate accessibilityTraits (.button, .selected) and update traits dynamically when state changes to communicate current selection status.-
Missing Editable Element Label1.3.1ACriticalEditable elements such as UITextField or UITextView should have both name and value available to screen readers. Add accessibilityLabel or associate with a UILabel to describe what information should be entered in text fields. Use placeholder text for additional guidance but never rely on it alone for accessibility. Ensure labels remain visible when fields are focused or filled.-
Missing Switch Element Label1.3.1ACriticalSwitch controls (UISwitch) in an app must have both their name and value available to screen readers. Add accessibilityLabel to switch controls to describe what setting or feature is being toggled on or off (e.g., "Enable notifications", "Dark mode"). The switch state (On/Off) is automatically announced by VoiceOver, so focus the label on describing the setting being controlled.-
Duplicate Accessibility Label4.1.2ACriticalMultiple UI elements on the same screen share the same accessibility label, causing confusion for screen reader users who cannot distinguish between different controls. Ensure each interactive element has a unique accessibilityLabel to prevent confusion. For similar elements (like multiple "Delete" buttons), add context such as "Delete photo 1", "Delete photo 2" or reference the item being acted upon.-

How to use this repository

  1. Open the rule page that best matches the report finding.
  2. Review the rule intent and the likely iOS implementation pattern involved.
  3. Apply the fix and rerun the affected scan flow to confirm improvement.

Test across 3000+ combinations of browsers, real devices & OS.

Book Demo

Help and Support

Related Articles