@@ -8,7 +8,7 @@ import type { OffsetValues } from './useOffset';
88const REMOVE_DIST = 130 ;
99
1010function getPosition ( e : React . MouseEvent | React . TouchEvent | MouseEvent | TouchEvent ) {
11- const obj = 'touches ' in e ? e . touches [ 0 ] : e ;
11+ const obj = 'targetTouches ' in e ? e . targetTouches [ 0 ] : e ;
1212
1313 return { pageX : obj . pageX , pageY : obj . pageY } ;
1414}
@@ -40,6 +40,7 @@ function useDrag(
4040
4141 const mouseMoveEventRef = React . useRef < ( event : MouseEvent ) => void > ( null ) ;
4242 const mouseUpEventRef = React . useRef < ( event : MouseEvent ) => void > ( null ) ;
43+ const touchEventTargetRef = React . useRef < EventTarget > ( null ) ;
4344
4445 const { onDragStart, onDragChange } = React . useContext ( UnstableContext ) ;
4546
@@ -54,8 +55,10 @@ function useDrag(
5455 ( ) => ( ) => {
5556 document . removeEventListener ( 'mousemove' , mouseMoveEventRef . current ) ;
5657 document . removeEventListener ( 'mouseup' , mouseUpEventRef . current ) ;
57- document . removeEventListener ( 'touchmove' , mouseMoveEventRef . current ) ;
58- document . removeEventListener ( 'touchend' , mouseUpEventRef . current ) ;
58+ if ( touchEventTargetRef . current ) {
59+ touchEventTargetRef . current . removeEventListener ( 'touchmove' , mouseMoveEventRef . current ) ;
60+ touchEventTargetRef . current . removeEventListener ( 'touchend' , mouseUpEventRef . current ) ;
61+ }
5962 } ,
6063 [ ] ,
6164 ) ;
@@ -193,10 +196,13 @@ function useDrag(
193196
194197 document . removeEventListener ( 'mouseup' , onMouseUp ) ;
195198 document . removeEventListener ( 'mousemove' , onMouseMove ) ;
196- document . removeEventListener ( 'touchend' , onMouseUp ) ;
197- document . removeEventListener ( 'touchmove' , onMouseMove ) ;
199+ if ( touchEventTargetRef . current ) {
200+ touchEventTargetRef . current . removeEventListener ( 'touchmove' , mouseMoveEventRef . current ) ;
201+ touchEventTargetRef . current . removeEventListener ( 'touchend' , mouseUpEventRef . current ) ;
202+ }
198203 mouseMoveEventRef . current = null ;
199204 mouseUpEventRef . current = null ;
205+ touchEventTargetRef . current = null ;
200206
201207 finishChange ( deleteMark ) ;
202208
@@ -206,10 +212,11 @@ function useDrag(
206212
207213 document . addEventListener ( 'mouseup' , onMouseUp ) ;
208214 document . addEventListener ( 'mousemove' , onMouseMove ) ;
209- document . addEventListener ( 'touchend' , onMouseUp ) ;
210- document . addEventListener ( 'touchmove' , onMouseMove ) ;
215+ e . currentTarget . addEventListener ( 'touchend' , onMouseUp ) ;
216+ e . currentTarget . addEventListener ( 'touchmove' , onMouseMove ) ;
211217 mouseMoveEventRef . current = onMouseMove ;
212218 mouseUpEventRef . current = onMouseUp ;
219+ touchEventTargetRef . current = e . currentTarget ;
213220 } ;
214221
215222 // Only return cache value when it mapping with rawValues
0 commit comments