종류
UNDETERMINED
초기값이다. gesture 인식을 대기하는 중인 상태다.
FAILED
Handler가 touch를 인식했으나, 활성화(activated)되지 못한 상태다. 이후 UNDETERMINED로 전환된다.
BEGAN
Handler가 touch를 인식중이며, 아직 FAIL 또는 ACTIVE 상태가 되기에 데이터가 부족한 상태다.
CANCELLED
외부 signal로 인해 continuous gesture가 취소된 상태다. Gesture recognizer는 UNDERTERMINED로 초기화된다.
ACTIVE
Gesture를 인식한 상태다. gesture가 끝나거나 취소될 때까지 유지된다. 일반적으로 END 상태로 전환되지만, 취소된 경우 CANCELLED 상태로 전환된다.
END
Gesture 인식을 정상적으로 종료한 상태다. 이후 UNDETERMINED로 전환된다.
State 흐름
-
일반적인 상황
UNDETERMINED -> BEGAN ------> ACTIVE ------> END -> UNDETERMINED
-
취소됨
UNDETERMINED -> BEGAN ------> FAILED -> UNDETERMINED
-
실패
UNDETERMINED -> BEGAN ------> ACTIVE ------> CANCELLED -> UNDETERMINED
State에 접근하기
onHandlerStateChange와 event의 state 속성을 통해 state에 접근할 수 있다.
import { State, LongPressGestureHandler } from 'react-native-gesture-handler';
class Demo extends Component {
_handleStateChange = ({ nativeEvent }) => {
if (nativeEvent.state === State.ACTIVE) {
Alert.alert('Longpress');
}
};
render() {
return (
<LongPressGestureHandler onHandlerStateChange={this._handleStateChange}>
<Text style={styles.buttonText}>Longpress me</Text>
</LongPressGestureHandler>
);
}
}

