mirror of
https://github.com/status-im/react-native.git
synced 2025-01-11 01:56:26 +00:00
36ad813899
Summary: This feature has been requested by customers. Our previous (pre-react) application had support for custom accessibility actions. This feature allows UI elements to provide a list of custom actions that can be read when VoiceOver is enabled. UI elements expose one accessibility action by default. Some UI elements may support multiple actions though other mechanisms like tap and hold. To expose these actions in an accessible way iOS provides custom accessibility actions. Feature was tested in the iOS simulator using the Accessibility Inspector. Custom actions were added to a button and observed in the tool. Custom actions were also invoked using the tool and then stepped through in the debugger. The feature was also tested on an iPhone. VoiceOver was enabled on the device and custom actions were observed for controls that exposed them. We have been using this feature in our app for some time as well. [IOS] [ENHANCEMENT] [Accessibility] - Added support for custom accessibility actions Eric Davison Microsoft Corp. Closes https://github.com/facebook/react-native/pull/17020 Differential Revision: D6472283 Pulled By: shergin fbshipit-source-id: 4ac4697dca07028e87ffe71b70c00280e7f2043c
119 lines
3.8 KiB
Objective-C
119 lines
3.8 KiB
Objective-C
/**
|
|
* Copyright (c) 2015-present, Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD-style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*/
|
|
|
|
#import <UIKit/UIKit.h>
|
|
|
|
#import <React/RCTBorderStyle.h>
|
|
#import <React/RCTComponent.h>
|
|
#import <React/RCTPointerEvents.h>
|
|
#import <React/RCTView.h>
|
|
|
|
@protocol RCTAutoInsetsProtocol;
|
|
|
|
@class RCTView;
|
|
|
|
@interface RCTView : UIView
|
|
|
|
/**
|
|
* Accessibility event handlers
|
|
*/
|
|
@property (nonatomic, copy) RCTDirectEventBlock onAccessibilityAction;
|
|
@property (nonatomic, copy) RCTDirectEventBlock onAccessibilityTap;
|
|
@property (nonatomic, copy) RCTDirectEventBlock onMagicTap;
|
|
|
|
/**
|
|
* Accessibility properties
|
|
*/
|
|
@property (nonatomic, copy) NSArray <NSString *> *accessibilityActions;
|
|
|
|
/**
|
|
* Used to control how touch events are processed.
|
|
*/
|
|
@property (nonatomic, assign) RCTPointerEvents pointerEvents;
|
|
|
|
+ (void)autoAdjustInsetsForView:(UIView<RCTAutoInsetsProtocol> *)parentView
|
|
withScrollView:(UIScrollView *)scrollView
|
|
updateOffset:(BOOL)updateOffset;
|
|
|
|
/**
|
|
* Find the first view controller whose view, or any subview is the specified view.
|
|
*/
|
|
+ (UIEdgeInsets)contentInsetsForView:(UIView *)curView;
|
|
|
|
/**
|
|
* Layout direction of the view.
|
|
* This is inherited from UIView+React, but we override it here
|
|
* to improve perfomance and make subclassing/overriding possible/easier.
|
|
*/
|
|
@property (nonatomic, assign) UIUserInterfaceLayoutDirection reactLayoutDirection;
|
|
|
|
/**
|
|
* This is an optimization used to improve performance
|
|
* for large scrolling views with many subviews, such as a
|
|
* list or table. If set to YES, any clipped subviews will
|
|
* be removed from the view hierarchy whenever -updateClippedSubviews
|
|
* is called. This would typically be triggered by a scroll event
|
|
*/
|
|
@property (nonatomic, assign) BOOL removeClippedSubviews;
|
|
|
|
/**
|
|
* Hide subviews if they are outside the view bounds.
|
|
* This is an optimisation used predominantly with RKScrollViews
|
|
* but it is applied recursively to all subviews that have
|
|
* removeClippedSubviews set to YES
|
|
*/
|
|
- (void)updateClippedSubviews;
|
|
|
|
/**
|
|
* Border radii.
|
|
*/
|
|
@property (nonatomic, assign) CGFloat borderRadius;
|
|
@property (nonatomic, assign) CGFloat borderTopLeftRadius;
|
|
@property (nonatomic, assign) CGFloat borderTopRightRadius;
|
|
@property (nonatomic, assign) CGFloat borderTopStartRadius;
|
|
@property (nonatomic, assign) CGFloat borderTopEndRadius;
|
|
@property (nonatomic, assign) CGFloat borderBottomLeftRadius;
|
|
@property (nonatomic, assign) CGFloat borderBottomRightRadius;
|
|
@property (nonatomic, assign) CGFloat borderBottomStartRadius;
|
|
@property (nonatomic, assign) CGFloat borderBottomEndRadius;
|
|
|
|
/**
|
|
* Border colors (actually retained).
|
|
*/
|
|
@property (nonatomic, assign) CGColorRef borderTopColor;
|
|
@property (nonatomic, assign) CGColorRef borderRightColor;
|
|
@property (nonatomic, assign) CGColorRef borderBottomColor;
|
|
@property (nonatomic, assign) CGColorRef borderLeftColor;
|
|
@property (nonatomic, assign) CGColorRef borderStartColor;
|
|
@property (nonatomic, assign) CGColorRef borderEndColor;
|
|
@property (nonatomic, assign) CGColorRef borderColor;
|
|
|
|
/**
|
|
* Border widths.
|
|
*/
|
|
@property (nonatomic, assign) CGFloat borderTopWidth;
|
|
@property (nonatomic, assign) CGFloat borderRightWidth;
|
|
@property (nonatomic, assign) CGFloat borderBottomWidth;
|
|
@property (nonatomic, assign) CGFloat borderLeftWidth;
|
|
@property (nonatomic, assign) CGFloat borderStartWidth;
|
|
@property (nonatomic, assign) CGFloat borderEndWidth;
|
|
@property (nonatomic, assign) CGFloat borderWidth;
|
|
|
|
/**
|
|
* Border styles.
|
|
*/
|
|
@property (nonatomic, assign) RCTBorderStyle borderStyle;
|
|
|
|
/**
|
|
* Insets used when hit testing inside this view.
|
|
*/
|
|
@property (nonatomic, assign) UIEdgeInsets hitTestEdgeInsets;
|
|
|
|
@end
|