TouchableWithoutFeedback
더 포괄적이고 미래 지향적인 터치 기반 입력 처리 방법을 원한다면 Pressable API를 확인해 보자. 특별한 이유가 없다면 사용하지 않는 것이 좋다. 터치에 반응하는 모든 엘리먼트는 터치 시 시각적 피드백을 제공해야 한다.
TouchableWithoutFeedback
는 단 하나의 자식만 지원한다. 여러 자식 컴포넌트를 사용하려면 View로 감싸야 한다. 중요한 점은 TouchableWithoutFeedback
가 자식을 복제하고 해당 자식에 responder props를 적용한다는 것이다. 따라서 중간 컴포넌트는 이러한 props를 기본 React Native 컴포넌트에 전달해야 한다.
사용 패턴
function MyComponent(props: MyComponentProps) {
return (
<View {...props} style={{flex: 1, backgroundColor: '#fff'}}>
<Text>My Component</Text>
</View>
);
}
<TouchableWithoutFeedback onPress={() => alert('Pressed!')}>
<MyComponent />
</TouchableWithoutFeedback>;
예제
참조
Props
accessibilityIgnoresInvertColors
iOS
색상 반전 기능이 활성화되었을 때, 이 뷰가 반전되어야 하는지 여부를 나타내는 값이다. true
로 설정하면 색상 반전이 켜져 있어도 이 뷰는 반전되지 않는다.
자세한 내용은 접근성 가이드를 참고한다.
타입 |
---|
Boolean |
accessible
true
일 경우, 해당 뷰가 접근성 엘리먼트임을 나타낸다. 기본적으로 모든 터치 가능한 엘리먼트는 접근성을 갖는다.
타입 |
---|
bool |
accessibilityLabel
사용자가 엘리먼트와 상호작용할 때 스크린 리더가 읽는 텍스트를 재정의한다. 기본적으로 라벨은 모든 자식 엘리먼트를 순회하며 Text
노드를 공백으로 구분해 연결한 값이다.
타입 |
---|
string |
accessibilityLanguage
iOS
사용자가 엘리먼트와 상호작용할 때 스크린 리더가 사용할 언어를 지정하는 값이다. 이 값은 BCP 47 사양을 따라야 한다.
자세한 내용은 iOS accessibilityLanguage
문서를 참고한다.
타입 |
---|
string |
accessibilityHint
접근성 힌트는 사용자가 접근성 엘리먼트에 특정 동작을 수행했을 때 어떤 결과가 발생하는지 이해하도록 돕는다. 이는 접근성 레이블만으로는 명확하지 않은 경우에 유용하다.
타입 |
---|
string |
accessibilityRole
accessibilityRole
은 보조 기술을 사용하는 사용자에게 컴포넌트의 목적을 전달한다.
accessibilityRole
은 다음 중 하나가 될 수 있다:
'none'
- 엘리먼트가 아무런 역할을 하지 않을 때 사용한다.'button'
- 엘리먼트를 버튼으로 취급해야 할 때 사용한다.'link'
- 엘리먼트를 링크로 취급해야 할 때 사용한다.'search'
- 텍스트 필드 엘리먼트를 검색 필드로도 취급해야 할 때 사용한다.'image'
- 엘리먼트를 이미지로 취급해야 할 때 사용한다. 예를 들어 버튼이나 링크와 결합할 수 있다.'keyboardkey'
- 엘리먼트가 키보드 키 역할을 할 때 사용한다.'text'
- 엘리먼트를 변경할 수 없는 정적 텍스트로 취급해야 할 때 사용한다.'adjustable'
- 엘리먼트가 조정 가능할 때 사용한다 (예: 슬라이더).'imagebutton'
- 엘리먼트를 버튼으로 취급해야 하면서 동시에 이미지일 때 사용한다.'header'
- 엘리먼트가 콘텐츠 섹션의 헤더 역할을 할 때 사용한다 (예: 네비게이션 바의 제목).'summary'
- 앱이 처음 실행될 때 현재 상태에 대한 빠른 요약을 제공할 수 있는 엘리먼트일 때 사용한다.'alert'
- 엘리먼트가 사용자에게 중요한 텍스트를 포함하고 있을 때 사용한다.'checkbox'
- 엘리먼트가 체크박스를 나타낼 때 사용한다. 체크박스는 체크, 언체크, 혹은 혼합 상태일 수 있다.'combobox'
- 엘리먼트가 콤보 박스를 나타낼 때 사용한다. 콤보 박스는 사용자가 여러 선택지 중 하나를 선택할 수 있게 한다.'menu'
- 컴포넌트가 선택지 메뉴일 때 사용한다.'menubar'
- 컴포넌트가 여러 메뉴의 컨테이너일 때 사용한다.'menuitem'
- 메뉴 내의 항목을 나타낼 때 사용한다.'progressbar'
- 작업의 진행 상태를 나타내는 컴포넌트일 때 사용한다.'radio'
- 라디오 버튼을 나타낼 때 사용한다.'radiogroup'
- 라디오 버튼 그룹을 나타낼 때 사용한다.'scrollbar'
- 스크롤 바를 나타낼 때 사용한다.'spinbutton'
- 선택지 목록을 여는 버튼을 나타낼 때 사용한다.'switch'
- 켜고 끌 수 있는 스위치를 나타낼 때 사용한다.'tab'
- 탭을 나타낼 때 사용한다.'tablist'
- 탭 목록을 나타낼 때 사용한다.'timer'
- 타이머를 나타낼 때 사용한다.'toolbar'
- 툴바를 나타낼 때 사용한다 (액션 버튼이나 컴포넌트의 컨테이너).
타입 |
---|
string |
accessibilityState
어시스턴트 기술 사용자에게 컴포넌트의 현재 상태를 설명한다.
자세한 내용은 접근성 가이드를 참고한다.
타입 |
---|
객체: {disabled: bool, selected: bool, checked: bool 또는 'mixed', busy: bool, expanded: bool} |
accessibilityActions
접근성 액션은 보조 기술이 컴포넌트의 액션을 프로그래밍 방식으로 실행할 수 있게 한다. accessibilityActions
속성은 액션 객체들의 리스트를 포함해야 한다. 각 액션 객체는 필드 이름과 라벨을 포함해야 한다.
더 자세한 정보는 접근성 가이드를 참고한다.
타입 |
---|
배열 |
aria-busy
aria-busy
는 현재 엘리먼트가 수정 중임을 나타내며, 보조 기술이 변경이 완료될 때까지 기다린 후 사용자에게 업데이트를 알려야 할 수 있음을 의미한다.
타입 | 기본값 |
---|---|
boolean | false |
aria-checked
체크 가능한 엘리먼트의 상태를 나타낸다. 이 필드는 불리언 값이나 "mixed" 문자열을 받아 혼합 상태 체크박스를 표현할 수 있다.
타입 | 기본값 |
---|---|
boolean, 'mixed' | false |
aria-disabled
이 속성은 엘리먼트가 인지 가능하지만 비활성화되어 있음을 나타낸다. 따라서 편집하거나 다른 방식으로 조작할 수 없다.
타입 | 기본값 |
---|---|
boolean | false |
aria-expanded
확장 가능한 엘리먼트가 현재 확장된 상태인지 축소된 상태인지를 나타낸다.
타입 | 기본값 |
---|---|
boolean | false |
aria-hidden
이 속성은 접근성 엘리먼트 내부의 접근성 요소들이 숨겨져 있는지 여부를 나타낸다.
예를 들어, A
와 B
라는 형제 뷰를 포함하는 윈도우에서 뷰 B
에 aria-hidden
을 true
로 설정하면, VoiceOver가 뷰 B
내부의 요소들을 무시하게 된다.
타입 | 기본값 |
---|---|
boolean | false |
aria-label
상호작용 가능한 엘리먼트에 대한 레이블 문자열을 정의한다.
타입 |
---|
string |
aria-live
Android
aria-live
는 엘리먼트가 업데이트될 것임을 나타내며, 사용자 에이전트, 보조 기술, 그리고 사용자가 라이브 영역에서 어떤 업데이트를 예상할 수 있는지 설명한다.
- off: 접근성 서비스가 이 뷰의 변경 사항을 알리지 않는다.
- polite: 접근성 서비스가 이 뷰의 변경 사항을 알린다.
- assertive: 접근성 서비스가 진행 중인 발화를 중단하고 즉시 이 뷰의 변경 사항을 알린다.
타입 | 기본값 |
---|---|
enum('assertive' , 'off' , 'polite' ) | 'off' |
aria-modal
iOS
VoiceOver가 수신자와 동일한 레벨의 형제 뷰에 있는 엘리먼트들을 무시해야 하는지를 나타내는 불리언 값이다. accessibilityViewIsModal
프로퍼티보다 우선순위가 높다.
타입 | 기본값 |
---|---|
boolean | false |
aria-selected
선택 가능한 엘리먼트가 현재 선택되었는지 여부를 나타낸다.
타입 |
---|
boolean |
onAccessibilityAction
사용자가 접근성 동작을 수행할 때 호출된다. 이 함수는 수행할 동작의 이름을 포함하는 이벤트를 유일한 인자로 받는다.
자세한 내용은 접근성 가이드를 참조한다.
타입 |
---|
function |
accessibilityValue
컴포넌트의 현재 값을 나타낸다. 이 값은 컴포넌트 값에 대한 텍스트 설명일 수도 있고, 슬라이더나 프로그레스 바 같은 범위 기반 컴포넌트의 경우 범위 정보(최소값, 현재값, 최대값)를 포함할 수 있다.
자세한 내용은 접근성 가이드를 참조한다.
타입 |
---|
객체: {min: number, max: number, now: number, text: string} |
aria-valuemax
슬라이더나 진행률 표시줄과 같은 범위 기반 컴포넌트의 최대값을 나타낸다. accessibilityValue
prop의 max
값보다 우선순위가 높다.
타입 |
---|
number |
aria-valuemin
범위 기반 컴포넌트(예: 슬라이더, 진행률 바)에서 최소값을 나타낸다. accessibilityValue
prop의 min
값보다 우선순위가 높다.
타입 |
---|
number |
aria-valuenow
범위 기반 컴포넌트(예: 슬라이더, 프로그레스 바)의 현재 값을 나타낸다. accessibilityValue
prop의 now
값보다 우선순위가 높다.
타입 |
---|
number |
aria-valuetext
컴포넌트의 텍스트 설명을 나타낸다. accessibilityValue
prop의 text
값보다 우선순위를 가진다.
타입 |
---|
string |
delayLongPress
onPressIn
이벤트 발생 후 onLongPress
가 호출되기까지의 지연 시간(밀리초 단위)을 설정한다.
타입 |
---|
number |
delayPressIn
터치가 시작된 후 onPressIn
이 호출되기까지의 지연 시간(밀리초 단위)을 설정한다.
타입 |
---|
number |
delayPressOut
터치를 놓은 후 onPressOut
이 호출되기까지의 지연 시간(밀리초 단위)을 설정한다.
타입 |
---|
number |
disabled
이 값을 true로 설정하면 해당 컴포넌트와의 모든 상호작용을 비활성화한다.
타입 |
---|
bool |
hitSlop
이 속성은 버튼에서 얼마나 멀리 떨어진 곳에서 터치를 시작할 수 있는지 정의한다. 버튼에서 벗어날 때 pressRetentionOffset
에 추가된다.
터치 영역은 부모 뷰의 경계를 넘어가지 않는다. 또한 두 개의 겹치는 뷰에 터치가 동시에 닿을 경우, 형제 뷰의 z-index가 우선순위를 가진다.
타입 |
---|
Rect 또는 숫자 |
id
이 속성은 네이티브 코드에서 이 뷰를 찾는 데 사용된다. nativeID
속성보다 우선순위가 높다.
타입 |
---|
string |
onBlur
아이템이 포커스를 잃을 때 호출된다.
타입 |
---|
function |
onFocus
아이템이 포커스를 받을 때 호출된다.
타입 |
---|
function |
onLayout
마운트 시와 레이아웃 변경 시 호출된다.
타입 |
---|
({nativeEvent: LayoutEvent}) => void |
onLongPress
onPressIn
이후 370밀리초 이상 지속될 때 호출된다. 이 시간은 delayLongPress
를 통해 커스터마이징할 수 있다.
타입 |
---|
function |
onPress
터치가 해제될 때 호출되지만, 취소된 경우(예: 응답자 잠금을 가져가는 스크롤 동작)에는 호출되지 않는다. 첫 번째 인자로 PressEvent 형태의 이벤트를 받는다.
타입 |
---|
function |
onPressIn
터치 가능한 엘리먼트가 눌렸을 때 즉시 호출되며, onPress
보다 먼저 실행된다. 네트워크 요청을 보낼 때 유용하게 사용할 수 있다. 첫 번째 인자로 PressEvent 타입의 이벤트를 받는다.
타입 |
---|
function |
onPressOut
터치가 해제되는 즉시 호출된다. onPress
보다 먼저 실행된다. 첫 번째 인자로 PressEvent 형태의 이벤트를 받는다.
타입 |
---|
function |
pressRetentionOffset
스크롤 뷰가 비활성화된 상태에서, 버튼이 비활성화되기 전에 터치가 버튼에서 얼마나 벗어날 수 있는지를 정의한다. 버튼이 비활성화된 후, 다시 버튼으로 터치를 옮기면 버튼이 다시 활성화된다! 스크롤 뷰가 비활성화된 상태에서 터치를 앞뒤로 여러 번 움직여 보자. 메모리 할당을 줄이기 위해 상수를 전달해야 한다.
타입 |
---|
Rect 또는 숫자 |
nativeID
타입 |
---|
문자열 |
testID
이 값은 엔드투엔드 테스트에서 해당 뷰를 식별하는 데 사용된다.
타입 |
---|
string |
touchSoundDisabled
Android
이 값을 true로 설정하면 터치 시 시스템 사운드를 재생하지 않는다.
타입 |
---|
Boolean |