mirror of
https://github.com/status-im/react-native.git
synced 2025-02-20 13:18:07 +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,
|
||||
onAccessibilityTap: true,
|
||||
onMagicTap: true,
|
||||
onAccessibilityEscape: true,
|
||||
collapsable: true,
|
||||
needsOffscreenAlphaCompositing: true,
|
||||
style: ReactNativeStyleAttributes,
|
||||
|
@ -62,6 +62,14 @@ type DirectEventProps = $ReadOnly<{|
|
||||
* See http://facebook.github.io/react-native/docs/view.html#onmagictap
|
||||
*/
|
||||
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<{|
|
||||
|
@ -30,6 +30,11 @@ class AccessibilityIOSExample extends React.Component<{}> {
|
||||
accessible={true}>
|
||||
<Text>Accessibility magic tap example</Text>
|
||||
</View>
|
||||
<View
|
||||
onAccessibilityEscape={() => alert('onAccessibilityEscape success')}
|
||||
accessible={true}>
|
||||
<Text>Accessibility escape example</Text>
|
||||
</View>
|
||||
<View accessibilityLabel="Some announcement" accessible={true}>
|
||||
<Text>Accessibility label example</Text>
|
||||
</View>
|
||||
|
@ -553,6 +553,12 @@ static NSString *RCTRecursiveAccessibilityLabel(UIView *view)
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (BOOL)accessibilityPerformEscape
|
||||
{
|
||||
_eventEmitter->onAccessibilityEscape();
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (BOOL)didActivateAccessibilityCustomAction:(UIAccessibilityCustomAction *)action
|
||||
{
|
||||
_eventEmitter->onAccessibilityAction(RCTStringFromNSString(action.name));
|
||||
|
@ -24,6 +24,7 @@
|
||||
@property (nonatomic, copy) RCTDirectEventBlock onAccessibilityAction;
|
||||
@property (nonatomic, copy) RCTDirectEventBlock onAccessibilityTap;
|
||||
@property (nonatomic, copy) RCTDirectEventBlock onMagicTap;
|
||||
@property (nonatomic, copy) RCTDirectEventBlock onAccessibilityEscape;
|
||||
|
||||
/**
|
||||
* 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 *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(onAccessibilityTap, reactAccessibilityElement.onAccessibilityTap, 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_EXPORT_VIEW_PROPERTY(backgroundColor, UIColor)
|
||||
|
@ -28,6 +28,10 @@ void ViewEventEmitter::onAccessibilityMagicTap() const {
|
||||
dispatchEvent("magicTap");
|
||||
}
|
||||
|
||||
void ViewEventEmitter::onAccessibilityEscape() const {
|
||||
dispatchEvent("accessibilityEscape");
|
||||
}
|
||||
|
||||
#pragma mark - Layout
|
||||
|
||||
void ViewEventEmitter::onLayout(const LayoutMetrics &layoutMetrics) const {
|
||||
|
@ -28,6 +28,7 @@ class ViewEventEmitter : public TouchEventEmitter {
|
||||
void onAccessibilityAction(const std::string &name) const;
|
||||
void onAccessibilityTap() const;
|
||||
void onAccessibilityMagicTap() const;
|
||||
void onAccessibilityEscape() const;
|
||||
|
||||
#pragma mark - Layout
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user