ARIA 접근성 가이드

모바일 앱 접근성 지침 · 8. 견고성 · 8.1 보조기술과의 호환성

8.1.2 상태 메시지

조회 결과, 로딩, 오류 같은 중요한 상태 메시지는 초점을 옮기지 않고도 보조기술 사용자에게 전달되어야 합니다.

KS X 3253:2025신규

한눈에 보기

검사 항목
8.1.2 상태 메시지
원칙
8. 견고성
지침
8.1 보조기술과의 호환성
도입
KS X 3253:2025

요구 사항

화면 안의 다음과 같은 중요한 상태 메시지는 보조기술의 초점 변경 없이 인식될 수 있도록 제공해야 합니다.

  • 작업의 완료 또는 결과(예: 조회 결과 개수, 장바구니에 추가된 수량)
  • 앱의 대기 상태(예: 로딩 중, 설치 중, 업데이트 중 아이콘)
  • 프로세스의 진행 또는 오류 정보(예: 서식 입력 시 자동으로 표시되는 오류 메시지)

개정 내역: 2025년 개정에서 새로 추가된 검사 항목입니다.

왜 필요한가요

보조기술 사용자도 작업을 방해받지 않으면서 중요한 상태 변화를 바로 알 수 있습니다.

도움받는 사용자

  • 화면낭독기 사용자
  • 점자정보단말기 사용자

적용 방법

상태 메시지를 표시하는 뷰를 라이브 리전으로 지정하거나 접근성 알림(announcement)을 보냅니다. 개념은 라이브 리전을 참고하세요. Android에서는 View.announceForAccessibility보다 라이브 리전을 쓰는 것이 권장되며, 이 메서드는 최신 API 수준(Android 16)에서 지원 중단(deprecated)으로 표시되었습니다.

Android (레이아웃 XML)
<TextView android:id="@+id/cartStatus"
    android:accessibilityLiveRegion="polite" />
Android (Kotlin · View)
cartStatus.text = "장바구니에 담았습니다. 총 3개"   // 텍스트가 바뀌면 TalkBack이 자동으로 읽음
// 오류처럼 즉시 알려야 하면 ACCESSIBILITY_LIVE_REGION_ASSERTIVE
Android (Jetpack Compose)
Text(statusText, Modifier.semantics { liveRegion = LiveRegionMode.Polite })
iOS (Swift · UIKit)
UIAccessibility.post(notification: .announcement, argument: "장바구니에 담았습니다. 총 3개")
// iOS 17+: 우선순위 지정
let msg = NSAttributedString(string: "검색 결과 24건",
    attributes: [.accessibilitySpeechAnnouncementPriority: UIAccessibilityPriority.high])
UIAccessibility.post(notification: .announcement, argument: msg)
iOS (SwiftUI)
AccessibilityNotification.Announcement("검색 결과 24건").post()   // iOS 17+
Flutter (Dart)
Semantics(liveRegion: true, child: Text(status))
// 또는 SemanticsService.announce('검색 결과 24건', TextDirection.ltr);
React Native
<Text accessibilityLiveRegion="polite">{status}</Text>   {/* Android */}
AccessibilityInfo.announceForAccessibility('장바구니에 담았습니다. 총 3개');  // iOS·Android

사례

화면에만 잠깐 표시되는 토스트

비권장텍스트
커스텀 토스트 뷰 "담았습니다" 1초 표시 후 사라짐 — TalkBack·VoiceOver 무반응

초점 이동 없이 알림

권장텍스트
[장바구니 담기] 누름 → 초점은 버튼에 그대로
TalkBack: "장바구니에 담았습니다. 총 3개"

자주 하는 실수

  • 검색 결과 개수, 담기 완료, 저장 완료 메시지가 화면에만 표시되고 낭독되지 않습니다.
  • 로딩 중 표시(스피너)가 보조기술에 전달되지 않아 앱이 멈춘 것처럼 느껴집니다.
  • 상태 메시지를 알리려고 초점을 메시지로 강제로 옮겨 작업 흐름을 끊습니다.

검사 방법

  • 검색, 필터, 장바구니 담기, 저장, 입력 검증 등 상태 메시지가 나오는 동작을 TalkBack·VoiceOver를 켠 채 실행합니다.
  • 초점이 이동하지 않은 상태에서 메시지가 낭독되는지 확인합니다.
  • 로딩·진행 상태가 시작과 완료 시점에 전달되는지 확인합니다.

관련 ARIA

다른 지침의 대응 항목