mirror of
https://github.com/status-im/react-native.git
synced 2025-02-22 14:18:23 +00:00
Accessibility Escape
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/22047 Differential Revision: D13146179 Pulled By: cpojer fbshipit-source-id: b8a089114a5deafee47dd482e484d413c8c39137
This commit is contained in:
parent
900f2df351
commit
ee7c702308
@ -34,6 +34,7 @@ ReactNativeViewAttributes.UIView = {
|
|||||||
onAccessibilityAction: true,
|
onAccessibilityAction: true,
|
||||||
onAccessibilityTap: true,
|
onAccessibilityTap: true,
|
||||||
onMagicTap: true,
|
onMagicTap: true,
|
||||||
|
onAccessibilityEscape: true,
|
||||||
collapsable: true,
|
collapsable: true,
|
||||||
needsOffscreenAlphaCompositing: true,
|
needsOffscreenAlphaCompositing: true,
|
||||||
style: ReactNativeStyleAttributes,
|
style: ReactNativeStyleAttributes,
|
||||||
|
@ -62,6 +62,14 @@ type DirectEventProps = $ReadOnly<{|
|
|||||||
* See http://facebook.github.io/react-native/docs/view.html#onmagictap
|
* See http://facebook.github.io/react-native/docs/view.html#onmagictap
|
||||||
*/
|
*/
|
||||||
onMagicTap?: ?() => void,
|
onMagicTap?: ?() => void,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When `accessible` is `true`, the system will invoke this function when the
|
||||||
|
* user performs the escape gesture.
|
||||||
|
*
|
||||||
|
* See http://facebook.github.io/react-native/docs/view.html#onaccessibilityescape
|
||||||
|
*/
|
||||||
|
onAccessibilityEscape?: ?Function,
|
||||||
|}>;
|
|}>;
|
||||||
|
|
||||||
type TouchEventProps = $ReadOnly<{|
|
type TouchEventProps = $ReadOnly<{|
|
||||||
|
@ -30,6 +30,11 @@ class AccessibilityIOSExample extends React.Component<{}> {
|
|||||||
accessible={true}>
|
accessible={true}>
|
||||||
<Text>Accessibility magic tap example</Text>
|
<Text>Accessibility magic tap example</Text>
|
||||||
</View>
|
</View>
|
||||||
|
<View
|
||||||
|
onAccessibilityEscape={() => alert('onAccessibilityEscape success')}
|
||||||
|
accessible={true}>
|
||||||
|
<Text>Accessibility escape example</Text>
|
||||||
|
</View>
|
||||||
<View accessibilityLabel="Some announcement" accessible={true}>
|
<View accessibilityLabel="Some announcement" accessible={true}>
|
||||||
<Text>Accessibility label example</Text>
|
<Text>Accessibility label example</Text>
|
||||||
</View>
|
</View>
|
||||||
|
@ -553,6 +553,12 @@ static NSString *RCTRecursiveAccessibilityLabel(UIView *view)
|
|||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (BOOL)accessibilityPerformEscape
|
||||||
|
{
|
||||||
|
_eventEmitter->onAccessibilityEscape();
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
|
||||||
- (BOOL)didActivateAccessibilityCustomAction:(UIAccessibilityCustomAction *)action
|
- (BOOL)didActivateAccessibilityCustomAction:(UIAccessibilityCustomAction *)action
|
||||||
{
|
{
|
||||||
_eventEmitter->onAccessibilityAction(RCTStringFromNSString(action.name));
|
_eventEmitter->onAccessibilityAction(RCTStringFromNSString(action.name));
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
@property (nonatomic, copy) RCTDirectEventBlock onAccessibilityAction;
|
@property (nonatomic, copy) RCTDirectEventBlock onAccessibilityAction;
|
||||||
@property (nonatomic, copy) RCTDirectEventBlock onAccessibilityTap;
|
@property (nonatomic, copy) RCTDirectEventBlock onAccessibilityTap;
|
||||||
@property (nonatomic, copy) RCTDirectEventBlock onMagicTap;
|
@property (nonatomic, copy) RCTDirectEventBlock onMagicTap;
|
||||||
|
@property (nonatomic, copy) RCTDirectEventBlock onAccessibilityEscape;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Accessibility properties
|
* Accessibility properties
|
||||||
|
@ -284,6 +284,16 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithCoder:unused)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (BOOL)accessibilityPerformEscape
|
||||||
|
{
|
||||||
|
if (_onAccessibilityEscape) {
|
||||||
|
_onAccessibilityEscape(nil);
|
||||||
|
return YES;
|
||||||
|
} else {
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
- (NSString *)description
|
- (NSString *)description
|
||||||
{
|
{
|
||||||
NSString *superDescription = super.description;
|
NSString *superDescription = super.description;
|
||||||
|
@ -119,6 +119,7 @@ RCT_REMAP_VIEW_PROPERTY(accessibilityIgnoresInvertColors, reactAccessibilityElem
|
|||||||
RCT_REMAP_VIEW_PROPERTY(onAccessibilityAction, reactAccessibilityElement.onAccessibilityAction, RCTDirectEventBlock)
|
RCT_REMAP_VIEW_PROPERTY(onAccessibilityAction, reactAccessibilityElement.onAccessibilityAction, RCTDirectEventBlock)
|
||||||
RCT_REMAP_VIEW_PROPERTY(onAccessibilityTap, reactAccessibilityElement.onAccessibilityTap, RCTDirectEventBlock)
|
RCT_REMAP_VIEW_PROPERTY(onAccessibilityTap, reactAccessibilityElement.onAccessibilityTap, RCTDirectEventBlock)
|
||||||
RCT_REMAP_VIEW_PROPERTY(onMagicTap, reactAccessibilityElement.onMagicTap, RCTDirectEventBlock)
|
RCT_REMAP_VIEW_PROPERTY(onMagicTap, reactAccessibilityElement.onMagicTap, RCTDirectEventBlock)
|
||||||
|
RCT_REMAP_VIEW_PROPERTY(onAccessibilityEscape, reactAccessibilityElement.onAccessibilityEscape, RCTDirectEventBlock)
|
||||||
RCT_REMAP_VIEW_PROPERTY(testID, reactAccessibilityElement.accessibilityIdentifier, NSString)
|
RCT_REMAP_VIEW_PROPERTY(testID, reactAccessibilityElement.accessibilityIdentifier, NSString)
|
||||||
|
|
||||||
RCT_EXPORT_VIEW_PROPERTY(backgroundColor, UIColor)
|
RCT_EXPORT_VIEW_PROPERTY(backgroundColor, UIColor)
|
||||||
|
@ -28,6 +28,10 @@ void ViewEventEmitter::onAccessibilityMagicTap() const {
|
|||||||
dispatchEvent("magicTap");
|
dispatchEvent("magicTap");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ViewEventEmitter::onAccessibilityEscape() const {
|
||||||
|
dispatchEvent("accessibilityEscape");
|
||||||
|
}
|
||||||
|
|
||||||
#pragma mark - Layout
|
#pragma mark - Layout
|
||||||
|
|
||||||
void ViewEventEmitter::onLayout(const LayoutMetrics &layoutMetrics) const {
|
void ViewEventEmitter::onLayout(const LayoutMetrics &layoutMetrics) const {
|
||||||
|
@ -28,6 +28,7 @@ class ViewEventEmitter : public TouchEventEmitter {
|
|||||||
void onAccessibilityAction(const std::string &name) const;
|
void onAccessibilityAction(const std::string &name) const;
|
||||||
void onAccessibilityTap() const;
|
void onAccessibilityTap() const;
|
||||||
void onAccessibilityMagicTap() const;
|
void onAccessibilityMagicTap() const;
|
||||||
|
void onAccessibilityEscape() const;
|
||||||
|
|
||||||
#pragma mark - Layout
|
#pragma mark - Layout
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user