@@ -249,7 +249,7 @@ export abstract class CanvasBase extends View implements ICanvasBase {
249249 _pointerCountFromEvent ( event ) {
250250 let count = 0 ;
251251 if ( global . isIOS ) {
252- count = event . getPointerCount ( ) ;
252+ count = event . ios . numberOfTouches ?? 0 ;
253253 } else if ( global . isAndroid ) {
254254 count = ( event . android . current || event . android . initial || event . android ) . getPointerCount ?.( ) ?? 0 ;
255255 }
@@ -259,14 +259,22 @@ export abstract class CanvasBase extends View implements ICanvasBase {
259259 _positionsFromEvent ( event ) {
260260 const positions = [ ] ;
261261
262- if ( global . isiOS ) {
263- const pointers = event . getAllPointers ( ) ;
264- const count = pointers . length ;
265-
266- for ( let i = 0 ; i < count ; i ++ ) {
267- const point = pointers [ i ] ;
268- positions . push ( point . getX ( ) , point . getY ( ) ,
269- ) ;
262+ if ( global . isIOS ) {
263+ const set = event ?. ios ?. touches as NSSet < UITouch > ;
264+ if ( event ?. ios ?. touches instanceof NSSet ) {
265+ const objects = set . allObjects ;
266+ for ( let i = 0 ; i < set . count ; i ++ ) {
267+ const touch = objects . objectAtIndex ( i ) ;
268+ const point = touch . locationInView ( touch . view ) ;
269+ positions . push ( point . x , point . x )
270+ }
271+ } else {
272+ const count = event . ios . numberOfTouches ;
273+ const rec = ( < UIGestureRecognizer > event . ios ) ;
274+ for ( let i = 0 ; i < count ; i ++ ) {
275+ const point = rec . locationOfTouchInView ( i , rec . view ) ;
276+ positions . push ( point . x , point . y ) ;
277+ }
270278 }
271279 } else if ( global . isAndroid ) {
272280 const motionEvent = event . android ?. current ?? event . android ;
@@ -316,7 +324,7 @@ export abstract class CanvasBase extends View implements ICanvasBase {
316324 }
317325 }
318326
319- if ( hasPointerDown && this . _previousPointerCount = == extraData . numberOfPointers ) {
327+ if ( hasPointerDown && this . _previousPointerCount ! == extraData . numberOfPointers ) {
320328 this . _previousPointerCount = extraData . numberOfPointers ;
321329 pointerId ++ ;
322330
@@ -328,7 +336,6 @@ export abstract class CanvasBase extends View implements ICanvasBase {
328336 }
329337 }
330338
331-
332339 this . notify ( {
333340 ...this . _createPointerEvent ( 'pointerdown' , extraData ) ,
334341 pointerId : pointerId
@@ -358,12 +365,9 @@ export abstract class CanvasBase extends View implements ICanvasBase {
358365 y
359366 }
360367 }
368+
361369 if ( hasPointerUp ) {
362- if ( global . isAndroid ) {
363- this . _previousPointerCount -= extraData . numberOfPointers ;
364- } else if ( global . isIOS ) {
365- this . _previousPointerCount -= 1 ;
366- }
370+ this . _previousPointerCount -= extraData . numberOfPointers ;
367371 for ( let i = 0 ; i < extraData . numberOfPointers ; i ++ ) {
368372 const x = extraData . positions [ i ] ;
369373 const y = extraData . positions [ i + 1 ] ;
@@ -433,46 +437,42 @@ export abstract class CanvasBase extends View implements ICanvasBase {
433437
434438 hasPointerMove = this . hasListeners ( 'pointermove' ) ;
435439 hasTouchMove = this . hasListeners ( 'touchmove' ) ;
440+ let data = { } ;
436441
437442 if ( hasPointerMove || hasTouchMove ) {
438443 const positions = this . _positionsFromEvent ( event ) ;
439- const x = global . isIOS ? ( < TouchGestureEventData > event ) . getX ( ) : positions [ 0 ] ;
440- const y = global . isIOS ? ( < TouchGestureEventData > event ) . getY ( ) : positions [ 1 ] ;
441444 extraData = {
442445 numberOfPointers,
443446 positions,
444- x,
445- y
447+ x : positions [ 0 ] ,
448+ y : positions [ 1 ]
446449 }
447- }
448450
451+ const dx = extraData . positions [ 2 ] - extraData . positions [ 0 ] ;
452+ const dy = extraData . positions [ 3 ] - extraData . positions [ 1 ] ;
453+ let delta = 0 ;
449454
450- const dx = extraData . positions [ 2 ] - extraData . positions [ 0 ] ;
451- const dy = extraData . positions [ 3 ] - extraData . positions [ 1 ] ;
452- let delta = 0 ;
453-
454- var distance = Math . sqrt ( dx * dx + dy * dy ) ;
455- if ( this . _previousPinchDistance ) {
456- delta = this . _previousPinchDistance - distance ;
455+ var distance = Math . sqrt ( dx * dx + dy * dy ) ;
456+ if ( this . _previousPinchDistance ) {
457+ delta = this . _previousPinchDistance - distance ;
458+ }
459+ this . _previousPinchDistance = distance ;
460+
461+ const x = event . getFocusX ( ) ;
462+ const y = event . getFocusY ( ) ;
463+ const scale = event . scale ;
464+
465+ data = {
466+ deltaMode : 0 ,
467+ clientX : x ,
468+ clientY : y ,
469+ screenX : x ,
470+ screenY : y ,
471+ deltaX : 0 ,
472+ deltaY : delta ,
473+ deltaZ : 0 ,
474+ } ;
457475 }
458- this . _previousPinchDistance = distance ;
459-
460- const x = event . getFocusX ( ) ;
461- const y = event . getFocusY ( ) ;
462- const scale = event . scale ;
463-
464- let data = {
465- deltaMode : 0 ,
466- clientX : x ,
467- clientY : y ,
468- screenX : x ,
469- screenY : y ,
470- deltaX : 0 ,
471- deltaY : delta ,
472- deltaZ : 0 ,
473- } ;
474-
475-
476476
477477 if ( hasPointerMove ) {
478478 const count = extraData . numberOfPointers ;
@@ -509,8 +509,8 @@ export abstract class CanvasBase extends View implements ICanvasBase {
509509 if ( hasPointerMove || hasTouchMove ) {
510510 const numberOfPointers = this . _pointerCountFromEvent ( event ) ;
511511 const positions = this . _positionsFromEvent ( event ) ;
512- const x = global . isIOS ? ( < TouchGestureEventData > event ) . getX ( ) : positions [ 0 ] ;
513- const y = global . isIOS ? ( < TouchGestureEventData > event ) . getY ( ) : positions [ 1 ] ;
512+ const x = positions [ 0 ] ;
513+ const y = positions [ 1 ] ;
514514 extraData = {
515515 numberOfPointers,
516516 positions,
0 commit comments