LongPressGestureHandler
A discrete gesture handler that activates when the corresponding view is pressed for a sufficiently long time. This handler's state will turn into END immediately after the finger is released. The handler will fail to recognize a touch event if the finger is lifted before the minimum required time or if the finger is moved further than the allowable distance.
The handler is implemented using UILongPressGestureRecognizer on iOS and LongPressGestureHandler on Android.
Properties
See set of properties inherited from base handler class. Below is a list of properties specific to the LongPressGestureHandler
component:
minDurationMs
Minimum time, expressed in milliseconds, that a finger must remain pressed on the corresponding view. The default value is 500.
maxDist
Maximum distance, expressed in points, that defines how far the finger is allowed to travel during a long press gesture. If the finger travels further than the defined distance and the handler hasn't yet activated, it will fail to recognize the gesture. The default value is 10.
Event data
See set of event attributes from base handler class. Below is a list of gesture event attributes specific to the LongPressGestureHandler
component:
x
X coordinate, expressed in points, of the current position of the pointer (finger or a leading pointer when there are multiple fingers placed) relative to the view attached to the handler.
y
Y coordinate, expressed in points, of the current position of the pointer (finger or a leading pointer when there are multiple fingers placed) relative to the view attached to the handler.
absoluteX
X coordinate, expressed in points, of the current position of the pointer (finger or a leading pointer when there are multiple fingers placed) relative to the root view. It is recommended to use absoluteX
instead of x
in cases when the view attached to the handler can be transformed as an effect of the gesture.
absoluteY
Y coordinate, expressed in points, of the current position of the pointer (finger or a leading pointer when there are multiple fingers placed) relative to the root view. It is recommended to use absoluteY
instead of y
in cases when the view attached to the handler can be transformed as an effect of the gesture.
duration
Duration of the long press (time since the start of the event), expressed in milliseconds.
Example
See the multitap example from GestureHandler Example App or view it directly on your phone by visiting our expo demo.
const LongPressButton = () => (
<LongPressGestureHandler
onHandlerStateChange={({ nativeEvent }) => {
if (nativeEvent.state === State.ACTIVE) {
Alert.alert("I'm being pressed for so long");
}
}}
minDurationMs={800}>
<View style={styles.box} />
</LongPressGestureHandler>
);