diff --git a/src/__tests__/fireEvent.test.js b/src/__tests__/fireEvent.test.js
index 5fef1c806..0b5f72c27 100644
--- a/src/__tests__/fireEvent.test.js
+++ b/src/__tests__/fireEvent.test.js
@@ -3,6 +3,7 @@ import React from 'react';
import {
View,
TouchableOpacity,
+ PanResponder,
Pressable,
Text,
ScrollView,
@@ -305,3 +306,27 @@ test('is not fooled by non-responder wrapping host elements', () => {
fireEvent.press(screen.getByText('Trigger'));
expect(handlePress).not.toHaveBeenCalled();
});
+
+function TestDraggableComponent({ onDrag }) {
+ const responderHandlers = PanResponder.create({
+ onMoveShouldSetPanResponder: (_evt, _gestureState) => true,
+ onPanResponderMove: onDrag,
+ }).panHandlers;
+
+ return (
+
+ Trigger
+
+ );
+}
+
+test('has only onMove', () => {
+ const handleDrag = jest.fn();
+
+ const screen = render();
+
+ fireEvent(screen.getByText('Trigger'), 'responderMove', {
+ touchHistory: { mostRecentTimeStamp: '2', touchBank: [] },
+ });
+ expect(handleDrag).toHaveBeenCalled();
+});
diff --git a/src/fireEvent.js b/src/fireEvent.js
index f3846c714..7f21f0339 100644
--- a/src/fireEvent.js
+++ b/src/fireEvent.js
@@ -23,7 +23,12 @@ const isEventEnabled = (
) => {
if (isTextInput(element)) return element?.props.editable !== false;
- return touchResponder?.props.onStartShouldSetResponder?.() !== false;
+ const touchStart = touchResponder?.props.onStartShouldSetResponder?.();
+ const touchMove = touchResponder?.props.onMoveShouldSetResponder?.();
+
+ if (touchStart || touchMove) return true;
+
+ return touchStart === undefined && touchMove === undefined;
};
const findEventHandler = (