모바일 앱 접근성 지침 · 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)으로 표시되었습니다.
<TextView android:id="@+id/cartStatus"
android:accessibilityLiveRegion="polite" />cartStatus.text = "장바구니에 담았습니다. 총 3개" // 텍스트가 바뀌면 TalkBack이 자동으로 읽음
// 오류처럼 즉시 알려야 하면 ACCESSIBILITY_LIVE_REGION_ASSERTIVEText(statusText, Modifier.semantics { liveRegion = LiveRegionMode.Polite })UIAccessibility.post(notification: .announcement, argument: "장바구니에 담았습니다. 총 3개")
// iOS 17+: 우선순위 지정
let msg = NSAttributedString(string: "검색 결과 24건",
attributes: [.accessibilitySpeechAnnouncementPriority: UIAccessibilityPriority.high])
UIAccessibility.post(notification: .announcement, argument: msg)AccessibilityNotification.Announcement("검색 결과 24건").post() // iOS 17+Semantics(liveRegion: true, child: Text(status))
// 또는 SemanticsService.announce('검색 결과 24건', TextDirection.ltr);<Text accessibilityLiveRegion="polite">{status}</Text> {/* Android */}
AccessibilityInfo.announceForAccessibility('장바구니에 담았습니다. 총 3개'); // iOS·Android사례
화면에만 잠깐 표시되는 토스트
커스텀 토스트 뷰 "담았습니다" 1초 표시 후 사라짐 — TalkBack·VoiceOver 무반응초점 이동 없이 알림
[장바구니 담기] 누름 → 초점은 버튼에 그대로
TalkBack: "장바구니에 담았습니다. 총 3개"자주 하는 실수
- 검색 결과 개수, 담기 완료, 저장 완료 메시지가 화면에만 표시되고 낭독되지 않습니다.
- 로딩 중 표시(스피너)가 보조기술에 전달되지 않아 앱이 멈춘 것처럼 느껴집니다.
- 상태 메시지를 알리려고 초점을 메시지로 강제로 옮겨 작업 흐름을 끊습니다.
검사 방법
- 검색, 필터, 장바구니 담기, 저장, 입력 검증 등 상태 메시지가 나오는 동작을 TalkBack·VoiceOver를 켠 채 실행합니다.
- 초점이 이동하지 않은 상태에서 메시지가 낭독되는지 확인합니다.
- 로딩·진행 상태가 시작과 완료 시점에 전달되는지 확인합니다.