Implementing Semantic Labels for Mobile App UI Elements

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 Semantic Labels for Mobile App UI Elements
Simple
from 1 business day to 3 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 Semantic Labels for Mobile UI Elements

Semantic Labels — not just accessibilityLabel. It's a properly structured system of descriptions, hints, roles and states for each interface element that screen reader announces to user. Difference between "button" (VoiceOver reads something by default) and "Add to favorites, button, not activated" — difference between usable and unusable application.

What Complete Element Description Consists Of

Label, Hint, Trait, Value

On iOS these are four separate properties of UIAccessibilityElement:

  • Label — what this is: "Ivan Petrov's profile photo", "Send button"
  • Hint — what happens on activation (optional if label is self-sufficient): "Opens profile page"
  • Traits — type and state: .button, .link, .image, .header, .selected, .notEnabled
  • Value — current value for stateful elements: slider "volume 70%", toggle "on"

VoiceOver announces them in order: label → value → traits → hint. Pause between label and value, pause before hint.

In SwiftUI: .accessibilityLabel(), .accessibilityHint(), .accessibilityAddTraits(), .accessibilityValue().

On Android equivalent: contentDescription (= label + value), AccessibilityNodeInfo.setRoleDescription() (= custom trait), stateDescription (API 30+).

Composite Elements

Product card with image, name, price and "Add to Cart" button:

Bad: VoiceOver focuses on each subview separately — 4 steps to reach button. Screen reader reads: "image", "Nike Air Max 90", "8,900 rubles", "button".

Correct: combine into single element with composite label: "Nike Air Max 90, 8,900 rubles" + trait .button + hint "Adds to cart". Plus separate element — "Add to Cart" button — if user needs quick access without reading entire card.

In UIKit: containerView.accessibilityElements = [productAccessibilityElement, addToCartButton]. productAccessibilityElement — custom UIAccessibilityElement with needed accessibilityFrame and label from multiple fields.

Dynamic States

"Favorite" button — heart icon, no text, changes state. Base label "Add to favorites". On addition — need update:

  • iOS: accessibilityLabel = "Remove from favorites", or via accessibilityTraits.insert(.selected) + label "Favorite" (VoiceOver adds "selected")
  • After change: UIAccessibility.post(notification: .announcement, argument: "Added to favorites") — instant notification without refocusing

Toggles (UISwitch, Toggle in SwiftUI, Switch in Compose) — state announced automatically: "Notifications, on". For custom toggles — need set accessibilityValue = isOn ? "on" : "off".

Section Headers

Screen with sections: accessibilityTraits = .header on section header — VoiceOver user can move between headers via swipe with "Headings" rotor selection. Without this can't quickly jump to needed section without linear traversal of all elements.

In Compose: Modifier.semantics { heading() } on Text-header.

Typical Mistakes

Icon buttons — contentDescription = "ic_heart" (resource filename) instead of "Add to favorites". Android Studio warns but developers often leave as is.

Placeholder in TextField as label: hint = "Enter email" in Android EditText — TalkBack reads hint as contentDescription only if contentDescription not set. On focus hint disappears and description vanishes. Need explicit contentDescription or use TextInputLayout with floating hint.

Buttons with number badges: "3" next to bell icon — screen reader reads "3, button" without context. Need: accessibilityLabel = "Notifications, 3 unread".

Timeframe: 1-3 days depending on number of components. Often combined with VoiceOver/TalkBack audit. Cost calculated individually.