I\'m adding a child view to my view programmatically, and when I do I attach all accessibility params to it:
[labelView setAccessibilityLabel:@\"label\"];
I had a different solution because I caused myself a different problem that manifested in the same way, namely XCUITests couldn't find basic elements. My app uses a UIWindow
with UIWindow.windowLevel
set to .normal + 2
to display a fullscreen loading spinner on top of the other windows. It turns out even when this window is not in the view hierarchy, or the accessibility hierarchy, or the responder chain, merely by its existence, it breaks the accessibility/view-hierarchy crawling system that UI tests use.
To verify this, I removed extra UIWindow
instances entirely from the app. The fix ended up being simpler, just using windowLevel = .alert
and not adding constants to UIKit's constants.
You need to make sure that the container view of your label view (UIEditText?) doesn't have isAccessibilityElement
set to YES. If it does it will hide the accessibility of its subviews (your label).
Check Make the Contents of Custom Container Views Accessible in the Accessibility Programming Guide