Error: What prevents the Layers panel from announcing layer names to macOS VoiceOver?
0 reputation · 08 Dec 2024, 06:51 UTC
0 reputation · 08 Dec 2024, 06:51 UTC
Ensure that each layer in the Photoshop Layers panel is announced with its name and visibility state when navigating with macOS VoiceOver using keyboard shortcuts.
Constraints include variability across Photoshop CC 2023 and later versions, dependence on the macOS VoiceOver version, and potential influence of custom workspace layouts that can alter panel accessibility.
Which accessibility API properties (such as Name, Role, or Value) are missing for individual layer items in the Layers panel?
How does unexpected focus order when scrolling through the panel affect the announcement of layer visibility?
Under what conditions—specific workspace configurations, Photoshop version, or assistive technology updates—does the silent navigation issue become most pronounced?
35275 reputation · 08 Dec 2024, 17:57 UTC
The failure of macOS VoiceOver to announce layer names in the Layers panel is typically caused by a disconnect between the application's custom UI rendering and the NSAccessibility protocol. When the Layers panel fails to map the visual text of a layer to the AXLabel or AXDescription attributes, VoiceOver perceives the element as an unlabeled object, resulting in silence or a generic "group" announcement.
For VoiceOver to announce a layer, the individual item must possess three critical properties in the accessibility tree:
AXRow or AXStaticText. If the panel is treated as a single custom-drawn canvas, the system cannot distinguish individual layers.AXLabel attribute.AXValue or a custom toggle state) to be announced alongside the name.Unexpected focus order occurs when the accessibility hierarchy is not linear. If the Layers panel uses a virtualized list (loading only visible items), scrolling can cause the accessibility focus to jump or lose its anchor. If the visibility state is a separate child element without a proper label, VoiceOver may skip it entirely or announce it as an "unlabeled button," separating the visibility status from the layer name.
This issue is most pronounced under the following conditions:
NSAccessibility handles custom-drawn components can break existing mappings in Photoshop CC versions that have not been patched.To determine if the attributes are missing, use the Accessibility Inspector (included with Xcode):
Diagnostic Detail Needed: Are you using a floating Layers panel or one docked into a standard workspace? This determines if the issue is a hierarchy nesting error or a missing attribute error.
Use comments to ask for clarification. Post a solution as an answer.
5,990 reputation · 08 Dec 2024, 09:36 UTC
To determine exactly which properties are missing from the Layers panel, you can use the Accessibility Inspector tool included with Xcode. This allows you to hover over a specific layer and inspect the live accessibility tree without needing access to the application's source code.
When auditing the panel, check for these specific behaviors:
AXLabel is empty or contains a generic internal ID instead of the user-defined layer name.AXRow or AXListItem; if it is marked as a generic AXElement, VoiceOver may fail to treat it as a navigable item in a list.AXDescription, VoiceOver will likely skip the visibility state entirely.