Skip to main content

디바이스에 현재 활성화된 스크린 리더가 있는지 확인해야 할 때가 있다. 이때 AccessibilityInfo API를 사용한다. 이 API를 통해 스크린 리더의 현재 상태를 확인할 수 있고, 스크린 리더 상태가 변경될 때 알림을 받을 수 있다.

참조

메서드

addEventListener()

tsx
static addEventListener(
eventName: AccessibilityChangeEventName | AccessibilityAnnouncementEventName,
handler: (
event: AccessibilityChangeEvent | AccessibilityAnnouncementFinishedEvent,
) => void,
): EmitterSubscription;

이벤트 핸들러를 추가한다. 지원되는 이벤트는 다음과 같다:

이벤트 이름설명
accessibilityServiceChanged
Android
TalkBack, 다른 Android 보조 기술, 그리고 타사 접근성 서비스가 활성화될 때 발생한다. 이벤트 핸들러의 인자는 불리언 값이다. 접근성 서비스가 활성화되면 true, 그렇지 않으면 false이다.
announcementFinished
iOS
스크린 리더가 공지를 마쳤을 때 발생한다. 이벤트 핸들러의 인자는 다음 키를 가진 딕셔너리이다:
  • announcement: 스크린 리더가 공지한 문자열.
  • success: 공지가 성공적으로 이루어졌는지 나타내는 불리언 값.
boldTextChanged
iOS
볼드 텍스트 토글 상태가 변경될 때 발생한다. 이벤트 핸들러의 인자는 불리언 값이다. 볼드 텍스트가 활성화되면 true, 그렇지 않으면 false이다.
grayscaleChanged
iOS
그레이 스케일 토글 상태가 변경될 때 발생한다. 이벤트 핸들러의 인자는 불리언 값이다. 그레이 스케일이 활성화되면 true, 그렇지 않으면 false이다.
invertColorsChanged
iOS
색상 반전 토글 상태가 변경될 때 발생한다. 이벤트 핸들러의 인자는 불리언 값이다. 색상 반전이 활성화되면 true, 그렇지 않으면 false이다.
reduceMotionChanged모션 감소 토글 상태가 변경될 때 발생한다. 이벤트 핸들러의 인자는 불리언 값이다. 모션 감소가 활성화되면(또는 "개발자 옵션"에서 "전환 애니메이션 크기"가 "애니메이션 끄기"로 설정되면) true, 그렇지 않으면 false이다.
reduceTransparencyChanged
iOS
투명도 감소 토글 상태가 변경될 때 발생한다. 이벤트 핸들러의 인자는 불리언 값이다. 투명도 감소가 활성화되면 true, 그렇지 않으면 false이다.
screenReaderChanged스크린 리더 상태가 변경될 때 발생한다. 이벤트 핸들러의 인자는 불리언 값이다. 스크린 리더가 활성화되면 true, 그렇지 않으면 false이다.

announceForAccessibility()

tsx
static announceForAccessibility(announcement: string);

스크린 리더가 읽어줄 문자열을 게시한다.

announceForAccessibilityWithOptions()

tsx
static announceForAccessibilityWithOptions(
announcement: string,
options: options: {queue?: boolean},
);

스크린 리더가 읽을 문자열을 옵션과 함께 전달한다. 기본적으로 발표는 기존 음성을 중단하지만, iOS에서는 옵션 객체에서 queuetrue로 설정하면 기존 음성 뒤에 대기열에 추가할 수 있다.

매개변수:

이름타입설명
announcement
필수
string스크린 리더가 읽을 문자열
options
필수
objectqueue - 기존 음성 뒤에 발표를 대기열에 추가
iOS

getRecommendedTimeoutMillis()
Android

tsx
static getRecommendedTimeoutMillis(originalTimeout: number): Promise<number>;

사용자가 필요한 타임아웃 값을 밀리초 단위로 가져온다. 이 값은 '접근성' 설정의 '작업 수행 시간(접근성 타임아웃)'에서 설정된다.

매개변수:

이름타입설명
originalTimeout
필수
number'접근성 타임아웃'이 설정되지 않았을 때 반환할 타임아웃 값. 밀리초 단위로 지정한다.

isAccessibilityServiceEnabled()
Android

tsx
static isAccessibilityServiceEnabled(): Promise<boolean>;

접근성 서비스가 활성화되었는지 확인한다. 여기에는 TalkBack뿐만 아니라 설치된 모든 타사 접근성 앱이 포함된다. TalkBack만 활성화되었는지 확인하려면 isScreenReaderEnabled를 사용한다. 이 함수는 Promise를 반환하며, 해당 Promise는 boolean 값으로 resolve된다. 접근성 서비스가 활성화된 경우 결과는 true이고, 그렇지 않으면 false이다.

참고: TalkBack의 상태만 확인하려면 isScreenReaderEnabled를 사용한다.

isBoldTextEnabled()
iOS

tsx
static isBoldTextEnabled(): Promise<boolean>:

현재 굵은 텍스트가 활성화되어 있는지 확인한다. Promise를 반환하며, 이는 boolean 값으로 resolve된다. 굵은 텍스트가 활성화되어 있으면 true, 그렇지 않으면 false를 반환한다.

isGrayscaleEnabled()
iOS

tsx
static isGrayscaleEnabled(): Promise<boolean>;

현재 그레이스케일이 활성화되어 있는지 확인한다. Promise를 반환하며, 이 Promise는 불리언 값으로 해결된다. 그레이스케일이 활성화되어 있으면 true, 그렇지 않으면 false를 반환한다.

isInvertColorsEnabled()
iOS

tsx
static isInvertColorsEnabled(): Promise<boolean>;

색상 반전 기능이 현재 활성화되어 있는지 확인하는 쿼리이다. 이 메서드는 Promise를 반환하며, 해당 Promise는 boolean 값으로 resolve된다. 색상 반전 기능이 활성화되어 있으면 true, 그렇지 않으면 false를 반환한다.

isReduceMotionEnabled()

tsx
static isReduceMotionEnabled(): Promise<boolean>;

현재 모션 감소 설정이 활성화되었는지 확인한다. Promise를 반환하며, 이 Promise는 boolean 값으로 resolve된다. 모션 감소가 활성화된 경우 true를 반환하고, 그렇지 않은 경우 false를 반환한다.

isReduceTransparencyEnabled()
iOS

tsx
static isReduceTransparencyEnabled(): Promise<boolean>;

현재 투명도 감소 기능이 활성화되어 있는지 확인한다. Promise를 반환하며, 이는 boolean 값으로 해결된다. 투명도 감소 기능이 활성화되어 있으면 true를 반환하고, 그렇지 않으면 false를 반환한다.

isScreenReaderEnabled()

tsx
static isScreenReaderEnabled(): Promise<boolean>;

스크린 리더가 현재 활성화되어 있는지 확인한다. Promise를 반환하며, 이 Promise는 boolean 값으로 resolve된다. 스크린 리더가 활성화되어 있으면 true를, 그렇지 않으면 false를 반환한다.

prefersCrossFadeTransitions()
iOS

tsx
static prefersCrossFadeTransitions(): Promise<boolean>;

모션 감소와 크로스페이드 트랜지션 설정이 현재 활성화되어 있는지 확인한다. Promise를 반환하며, 이 Promise는 boolean 값으로 해결된다. 크로스페이드 트랜지션이 활성화되어 있으면 true를 반환하고, 그렇지 않으면 false를 반환한다.

setAccessibilityFocus()

tsx
static setAccessibilityFocus(reactTag: number);

React 컴포넌트에 접근성 포커스를 설정한다.

안드로이드에서는 UIManager.sendAccessibilityEvent 메서드를 호출하며, 전달된 reactTagUIManager.AccessibilityEventTypes.typeViewFocused 인자를 사용한다.

참고: 접근성 포커스를 받을 View에는 반드시 accessible={true} 속성이 설정되어 있어야 한다.