import React, { Component } from 'react'; import { StyleSheet, View, Alert, Text } from 'react-native'; import { LongPressGestureHandler, ScrollView, State, TapGestureHandler, LongPressGestureHandlerStateChangeEvent, TapGestureHandlerStateChangeEvent, } from 'react-native-gesture-handler'; import { LoremIpsum } from '../../common'; interface PressBoxProps { setDuration?: (duration: number) => void; } interface ExampleState { longPressDuration: number; } export class PressBox extends Component { private doubleTapRef = React.createRef(); private onHandlerStateChange = ( event: LongPressGestureHandlerStateChangeEvent ) => { this.props.setDuration?.(event.nativeEvent.duration); }; private onSingleTap = (event: TapGestureHandlerStateChangeEvent) => { if (event.nativeEvent.state === State.ACTIVE) { Alert.alert("I'm touched"); } }; private onDoubleTap = (event: TapGestureHandlerStateChangeEvent) => { if (event.nativeEvent.state === State.ACTIVE) { Alert.alert('Double tap, good job!'); } }; render() { return ( ); } } export default class Example extends Component< Record, ExampleState > { constructor(props: Record) { super(props); this.state = { longPressDuration: 0 }; } render() { return ( Duration of the last long press: {this.state.longPressDuration}ms this.setState({ longPressDuration: duration }) } /> ); } } const styles = StyleSheet.create({ scrollView: { flex: 1, }, box: { width: 150, height: 150, alignSelf: 'center', backgroundColor: 'plum', margin: 10, zIndex: 200, }, text: { marginLeft: 20, }, });