mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-24 04:16:00 +08:00
Added accessibility traits support to View class
This commit is contained in:
@@ -141,6 +141,7 @@ RCT_EXTERN BOOL RCTCopyProperty(id target, id source, NSString *keyPath);
|
||||
* Underlying implementations of RCT_XXX_CONVERTER macros. Ignore these.
|
||||
*/
|
||||
RCT_EXTERN NSNumber *RCTConvertEnumValue(const char *, NSDictionary *, NSNumber *, id);
|
||||
RCT_EXTERN NSNumber *RCTConvertMultiEnumValue(const char *, NSDictionary *, NSNumber *, id);
|
||||
RCT_EXTERN NSArray *RCTConvertArrayValue(SEL, id);
|
||||
RCT_EXTERN void RCTLogConvertError(id, const char *);
|
||||
|
||||
@@ -194,6 +195,21 @@ RCT_CUSTOM_CONVERTER(type, type, [[self NSNumber:json] getter])
|
||||
return [RCTConvertEnumValue(#type, mapping, @(default), json) getter]; \
|
||||
}
|
||||
|
||||
/**
|
||||
* This macro is used for creating converters for enum types for
|
||||
* multiple enum values combined with | operator
|
||||
*/
|
||||
#define RCT_MULTI_ENUM_CONVERTER(type, values, default, getter) \
|
||||
+ (type)type:(id)json \
|
||||
{ \
|
||||
static NSDictionary *mapping; \
|
||||
static dispatch_once_t onceToken; \
|
||||
dispatch_once(&onceToken, ^{ \
|
||||
mapping = values; \
|
||||
}); \
|
||||
return [RCTConvertMultiEnumValue(#type, mapping, @(default), json) getter]; \
|
||||
}
|
||||
|
||||
/**
|
||||
* This macro is used for creating converter functions for typed arrays.
|
||||
*/
|
||||
|
||||
@@ -175,6 +175,22 @@ NSNumber *RCTConvertEnumValue(const char *typeName, NSDictionary *mapping, NSNum
|
||||
return value ?: defaultValue;
|
||||
}
|
||||
|
||||
NSNumber *RCTConvertMultiEnumValue(const char *typeName, NSDictionary *mapping, NSNumber *defaultValue, id json)
|
||||
{
|
||||
if ([json isKindOfClass:[NSArray class]]) {
|
||||
if ([json count] == 0) {
|
||||
return defaultValue;
|
||||
}
|
||||
long long result = 0;
|
||||
for (id arrayElement in json) {
|
||||
NSNumber *value = RCTConvertEnumValue(typeName, mapping, defaultValue, arrayElement);
|
||||
result |= [value longLongValue];
|
||||
}
|
||||
return @(result);
|
||||
}
|
||||
return RCTConvertEnumValue(typeName, mapping, defaultValue, json);
|
||||
}
|
||||
|
||||
RCT_ENUM_CONVERTER(NSTextAlignment, (@{
|
||||
@"auto": @(NSTextAlignmentNatural),
|
||||
@"left": @(NSTextAlignmentLeft),
|
||||
|
||||
Reference in New Issue
Block a user