@@ -99,6 +99,29 @@ UIKIT_STATIC_INLINE CGRect CGRectValue(NSValue *value)
9999
100100#define RCTUIColor UIColor
101101
102+ // RCTUIAccessibilityTraits - typedef to UIAccessibilityTraits on iOS
103+ static const UIAccessibilityTraits RCTUIAccessibilityTraitSwitch = 0x20000000000001 ;
104+
105+ typedef UIAccessibilityTraits RCTUIAccessibilityTraits;
106+ #define RCTUIAccessibilityTraitNone UIAccessibilityTraitNone
107+ #define RCTUIAccessibilityTraitButton UIAccessibilityTraitButton
108+ #define RCTUIAccessibilityTraitLink UIAccessibilityTraitLink
109+ #define RCTUIAccessibilityTraitImage UIAccessibilityTraitImage
110+ #define RCTUIAccessibilityTraitSelected UIAccessibilityTraitSelected
111+ #define RCTUIAccessibilityTraitPlaysSound UIAccessibilityTraitPlaysSound
112+ #define RCTUIAccessibilityTraitKeyboardKey UIAccessibilityTraitKeyboardKey
113+ #define RCTUIAccessibilityTraitStaticText UIAccessibilityTraitStaticText
114+ #define RCTUIAccessibilityTraitSummaryElement UIAccessibilityTraitSummaryElement
115+ #define RCTUIAccessibilityTraitNotEnabled UIAccessibilityTraitNotEnabled
116+ #define RCTUIAccessibilityTraitUpdatesFrequently UIAccessibilityTraitUpdatesFrequently
117+ #define RCTUIAccessibilityTraitSearchField UIAccessibilityTraitSearchField
118+ #define RCTUIAccessibilityTraitStartsMediaSession UIAccessibilityTraitStartsMediaSession
119+ #define RCTUIAccessibilityTraitAdjustable UIAccessibilityTraitAdjustable
120+ #define RCTUIAccessibilityTraitAllowsDirectInteraction UIAccessibilityTraitAllowsDirectInteraction
121+ #define RCTUIAccessibilityTraitCausesPageTurn UIAccessibilityTraitCausesPageTurn
122+ #define RCTUIAccessibilityTraitHeader UIAccessibilityTraitHeader
123+ #define RCTUIAccessibilityTraitTabBar UIAccessibilityTraitTabBar
124+
102125UIKIT_STATIC_INLINE UIFont *UIFontWithSize (UIFont *font, CGFloat pointSize)
103126{
104127 return [font fontWithSize: pointSize];
@@ -281,6 +304,74 @@ CGContextRef UIGraphicsGetCurrentContext(void);
281304// UIAccessibility.h/NSAccessibility.h
282305@compatibility_alias UIAccessibilityCustomAction NSAccessibilityCustomAction ;
283306
307+ // RCTUIAccessibilityTraits - define as bitmask type for macOS
308+ // On macOS these don't directly map to behavior, but allow code to compile
309+ // The actual accessibility role mapping is done in RCTViewAccessibilityElement
310+ typedef uint64_t RCTUIAccessibilityTraits;
311+
312+ // Trait constants matching iOS UIAccessibilityConstants.h
313+ static const RCTUIAccessibilityTraits RCTUIAccessibilityTraitNone = 0 ;
314+ static const RCTUIAccessibilityTraits RCTUIAccessibilityTraitButton = (1ULL << 0 );
315+ static const RCTUIAccessibilityTraits RCTUIAccessibilityTraitLink = (1ULL << 1 );
316+ static const RCTUIAccessibilityTraits RCTUIAccessibilityTraitImage = (1ULL << 2 );
317+ static const RCTUIAccessibilityTraits RCTUIAccessibilityTraitSelected = (1ULL << 3 );
318+ static const RCTUIAccessibilityTraits RCTUIAccessibilityTraitPlaysSound = (1ULL << 4 );
319+ static const RCTUIAccessibilityTraits RCTUIAccessibilityTraitKeyboardKey = (1ULL << 5 );
320+ static const RCTUIAccessibilityTraits RCTUIAccessibilityTraitStaticText = (1ULL << 6 );
321+ static const RCTUIAccessibilityTraits RCTUIAccessibilityTraitSummaryElement = (1ULL << 7 );
322+ static const RCTUIAccessibilityTraits RCTUIAccessibilityTraitNotEnabled = (1ULL << 8 );
323+ static const RCTUIAccessibilityTraits RCTUIAccessibilityTraitUpdatesFrequently = (1ULL << 9 );
324+ static const RCTUIAccessibilityTraits RCTUIAccessibilityTraitSearchField = (1ULL << 10 );
325+ static const RCTUIAccessibilityTraits RCTUIAccessibilityTraitStartsMediaSession = (1ULL << 11 );
326+ static const RCTUIAccessibilityTraits RCTUIAccessibilityTraitAdjustable = (1ULL << 12 );
327+ static const RCTUIAccessibilityTraits RCTUIAccessibilityTraitAllowsDirectInteraction = (1ULL << 13 );
328+ static const RCTUIAccessibilityTraits RCTUIAccessibilityTraitCausesPageTurn = (1ULL << 14 );
329+ static const RCTUIAccessibilityTraits RCTUIAccessibilityTraitHeader = (1ULL << 15 );
330+ static const RCTUIAccessibilityTraits RCTUIAccessibilityTraitTabBar = (1ULL << 16 );
331+ static const RCTUIAccessibilityTraits RCTUIAccessibilityTraitSwitch = (1ULL << 17 );
332+
333+ // Convert RCTUIAccessibilityTraits to NSAccessibilityRole for macOS
334+ NS_INLINE NSAccessibilityRole RCTAccessibilityRoleFromTraits (RCTUIAccessibilityTraits traits)
335+ {
336+ if (traits & RCTUIAccessibilityTraitSwitch) {
337+ return NSAccessibilityCheckBoxRole ;
338+ }
339+ if (traits & RCTUIAccessibilityTraitButton) {
340+ return NSAccessibilityButtonRole ;
341+ }
342+ if (traits & RCTUIAccessibilityTraitLink) {
343+ return NSAccessibilityLinkRole ;
344+ }
345+ if (traits & RCTUIAccessibilityTraitImage) {
346+ return NSAccessibilityImageRole ;
347+ }
348+ if (traits & RCTUIAccessibilityTraitKeyboardKey) {
349+ return NSAccessibilityButtonRole ;
350+ }
351+ if (traits & RCTUIAccessibilityTraitHeader) {
352+ return NSAccessibilityStaticTextRole ;
353+ }
354+ if (traits & RCTUIAccessibilityTraitStaticText) {
355+ return NSAccessibilityStaticTextRole ;
356+ }
357+ if (traits & RCTUIAccessibilityTraitSummaryElement) {
358+ return NSAccessibilityStaticTextRole ;
359+ }
360+ if (traits & RCTUIAccessibilityTraitSearchField) {
361+ return NSAccessibilityTextFieldRole ;
362+ }
363+ if (traits & RCTUIAccessibilityTraitAdjustable) {
364+ return NSAccessibilitySliderRole ;
365+ }
366+ if (traits & RCTUIAccessibilityTraitUpdatesFrequently) {
367+ return NSAccessibilityProgressIndicatorRole ;
368+ }
369+ if (traits & RCTUIAccessibilityTraitTabBar) {
370+ return NSAccessibilityTabGroupRole ;
371+ }
372+ return NSAccessibilityUnknownRole ;
373+ }
374+
284375// UIColor.h/NSColor.h
285376#define RCTUIColor NSColor
286377
@@ -438,6 +529,11 @@ void UIBezierPathAppendPath(UIBezierPath *path, UIBezierPath *appendPath);
438529 */
439530@property (nonatomic , assign ) BOOL enableFocusRing;
440531
532+ /* *
533+ * iOS compatibility shim. On macOS, this forwards to accessibilityChildren.
534+ */
535+ @property (nonatomic , copy ) NSArray *accessibilityElements;
536+
441537@end
442538
443539// UIScrollView
0 commit comments