@@ -73,15 +73,15 @@ public override void TouchesBegan(NSSet touches, UIEvent evt)
7373
7474 IsCanceled = false ;
7575 _startPoint = GetTouchPoint ( touches ) ;
76- HandleTouch ( TouchStatus . Started ) ;
76+ HandleTouch ( TouchStatus . Started , UserInteractionState . Running ) ;
7777 base . TouchesBegan ( touches , evt ) ;
7878 }
7979
8080 public override void TouchesEnded ( NSSet touches , UIEvent evt )
8181 {
8282 if ( _effect ? . IsDisabled ?? true ) return ;
8383
84- HandleTouch ( _effect ? . Status == TouchStatus . Started ? TouchStatus . Completed : TouchStatus . Canceled ) ;
84+ HandleTouch ( _effect ? . Status == TouchStatus . Started ? TouchStatus . Completed : TouchStatus . Canceled , UserInteractionState . Idle ) ;
8585 IsCanceled = true ;
8686 base . TouchesEnded ( touches , evt ) ;
8787 }
@@ -90,7 +90,7 @@ public override void TouchesCancelled(NSSet touches, UIEvent evt)
9090 {
9191 if ( _effect ? . IsDisabled ?? true ) return ;
9292
93- HandleTouch ( TouchStatus . Canceled ) ;
93+ HandleTouch ( TouchStatus . Canceled , UserInteractionState . Idle ) ;
9494 IsCanceled = true ;
9595 base . TouchesCancelled ( touches , evt ) ;
9696 }
@@ -108,7 +108,7 @@ public override void TouchesMoved(NSSet touches, UIEvent evt)
108108 var maxDiff = Max ( diffX , diffY ) ;
109109 if ( maxDiff > disallowTouchThreshold )
110110 {
111- HandleTouch ( TouchStatus . Canceled ) ;
111+ HandleTouch ( TouchStatus . Canceled , UserInteractionState . Idle ) ;
112112 IsCanceled = true ;
113113 base . TouchesMoved ( touches , evt ) ;
114114 return ;
@@ -140,7 +140,7 @@ protected override void Dispose(bool disposing)
140140 private CGPoint ? GetTouchPoint ( NSSet touches )
141141 => Renderer != null ? ( touches ? . AnyObject as UITouch ) ? . LocationInView ( Renderer ) : null ;
142142
143- public void HandleTouch ( TouchStatus status )
143+ public void HandleTouch ( TouchStatus status , UserInteractionState ? userInteractionState = null )
144144 {
145145 if ( IsCanceled || _effect == null )
146146 {
@@ -149,7 +149,12 @@ public void HandleTouch(TouchStatus status)
149149
150150 if ( _effect ? . IsDisabled ?? true ) return ;
151151
152- _effect ? . HandleTouch ( status ) ;
152+ _effect . HandleTouch ( status ) ;
153+ if ( userInteractionState . HasValue )
154+ {
155+ _effect . HandleUserInteraction ( userInteractionState . Value ) ;
156+ }
157+
153158 if ( _effect == null || ! _effect . NativeAnimation || ! _effect . CanExecute )
154159 {
155160 return ;
@@ -196,7 +201,7 @@ public override bool ShouldRecognizeSimultaneously(UIGestureRecognizer gestureRe
196201 if ( gestureRecognizer is TouchUITapGestureRecognizer touchGesture && otherGestureRecognizer is UIPanGestureRecognizer &&
197202 otherGestureRecognizer . State == UIGestureRecognizerState . Began )
198203 {
199- touchGesture . HandleTouch ( TouchStatus . Canceled ) ;
204+ touchGesture . HandleTouch ( TouchStatus . Canceled , UserInteractionState . Idle ) ;
200205 touchGesture . IsCanceled = true ;
201206 }
202207
0 commit comments