ARIA 접근성 가이드

모바일 앱 접근성 지침 · 6. 운용의 용이성 · 6.5 입력 방식

6.5.2 포인터 입력 취소

단일 포인터로 실행되는 기능은 누르는 순간(다운 이벤트)에 실행되지 않고, 실행 전 중지나 실행 후 취소가 가능해야 합니다.

KS X 3253:2025신규

한눈에 보기

검사 항목
6.5.2 포인터 입력 취소
원칙
6. 운용의 용이성
지침
6.5 입력 방식
도입
KS X 3253:2025

요구 사항

단일 포인터 입력으로 실행되는 기능은 실수로 실행되는 것을 막기 위해 다음 중 하나 이상을 지켜야 합니다.

  • 다운 이벤트만으로 실행 금지 — 누르는 순간(down-event)만으로 기능이 실행되지 않아야 합니다.
  • 중지 또는 실행 취소 — 기능은 손을 뗄 때(up-event) 완료되어야 하며, 실행 전에 중지하거나 실행 후에 취소할 수 있어야 합니다.
  • 되돌리기 — 다운 이벤트로 실행된 기능은 업 이벤트로 되돌릴 수 있어야 합니다.

예외 — 화면 피아노 건반, 슈팅 게임처럼 기능을 완료하는 데 다운 이벤트가 반드시 필요한 경우.

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

왜 필요한가요

잘못 눌렀다는 것을 알았을 때 손가락을 컨트롤 밖으로 옮겨 취소하거나 결과를 되돌릴 수 있어 우발적인 오동작이 줄어듭니다.

도움받는 사용자

  • 손떨림·운동 장애가 있는 사용자
  • 저시력인
  • 인지장애인

적용 방법

표준 버튼과 클릭 리스너는 손을 뗄 때 실행되고 영역 밖으로 끌면 취소됩니다. 터치 이벤트를 직접 처리할 때 ACTION_DOWN·touchesBegan에서 실행하지 않습니다.

Android (Kotlin · View)
// 비권장: 누르는 순간 실행
view.setOnTouchListener { _, e -> if (e.action == MotionEvent.ACTION_DOWN) sendMessage(); true }
// 권장: 표준 클릭(업 이벤트, 영역 밖으로 끌면 취소)
view.setOnClickListener { sendMessage() }
iOS (Swift · UIKit)
// 비권장: .touchDown
button.addTarget(self, action: #selector(send), for: .touchDown)
// 권장: .touchUpInside (밖으로 끌어 놓으면 실행되지 않음)
button.addTarget(self, action: #selector(send), for: .touchUpInside)
React Native
// 비권장: onPressIn={send}
<Pressable onPress={send} accessibilityRole="button" accessibilityLabel="보내기" />

사례

누르는 즉시 결제

비권장텍스트
onTouchDown → 결제 실행 (손가락을 밖으로 빼도 취소 불가)

업 이벤트에 실행 + 되돌리기

권장텍스트
onClick → 삭제 실행 → 스낵바 "삭제했습니다 [실행 취소]"

자주 하는 실수

  • 터치 다운 이벤트에서 전송·결제·삭제 같은 기능을 실행합니다.
  • 되돌릴 수 없는 기능에 취소나 확인 단계가 없습니다.

검사 방법

  • 각 버튼을 누른 채 손가락을 버튼 밖으로 옮긴 뒤 떼어, 기능이 실행되지 않는지 확인합니다.
  • 누르는 순간 실행되는 기능은 업 이벤트로 되돌릴 수 있는지, 또는 다운 이벤트가 필수인 예외인지 확인합니다.

다른 지침의 대응 항목