Skip to content

Commit 9a2df4f

Browse files
eulpheanberickson1
authored andcommitted
[Accessibility] Expose the implementation for setting accessibility focus programmatically on iOS. Also, expose .focus() API for RX.Button. (#90)
* [Accessibility] Expose the implementation for setting accessibility focus programmatically on iOS. Also, expose .focus() API for RX.Button.
1 parent 342b1fe commit 9a2df4f

File tree

4 files changed

+6
-3
lines changed

4 files changed

+6
-3
lines changed

src/ios/Accessibility.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ export class Accessibility extends NativeAccessibility {
6262
}
6363

6464
// Some versions of RN don't support this interface.
65-
if (RN.AccessibilityInfo) {
65+
if (RN.AccessibilityInfo && RN.AccessibilityInfo.announceForAccessibility) {
6666
RN.AccessibilityInfo.announceForAccessibility(announcement);
6767
}
6868
}

src/ios/AccessibilityUtil.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ import { AccessibilityPlatformUtil } from '../common/AccessibilityUtil';
1515

1616
export class AccessibilityUtil extends AccessibilityPlatformUtil {
1717
setAccessibilityFocus(component: React.Component<any, any>): void {
18-
// NO-OP
18+
if (Accessibility.isScreenReaderEnabled() && RN.AccessibilityInfo && RN.AccessibilityInfo.setAccessibilityFocus) {
19+
RN.AccessibilityInfo.setAccessibilityFocus(RN.findNodeHandle(component));
20+
}
1921
}
2022
}
2123

src/native-common/Button.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ export class Button extends RX.Button<{}> {
196196
}
197197

198198
focus() {
199-
// native mobile platforms doesn't have the notion of focus for buttons, so ignore.
199+
AccessibilityUtil.setAccessibilityFocus(this);
200200
}
201201

202202
blur() {

src/typings/react-native.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -703,6 +703,7 @@ declare module 'react-native' {
703703
static addEventListener(type: string, handler: (event: any) => void): void;
704704
static removeEventListener(type: string, handler: (event: any) => void): void;
705705
static announceForAccessibility(announcement: string): void;
706+
static setAccessibilityFocus(reactTag: number): void;
706707
}
707708

708709
interface AlertButtonSpec {

0 commit comments

Comments
 (0)