From ab0daa194734be0e45d8582e9254c447b464b27f Mon Sep 17 00:00:00 2001 From: Samantha Houts Date: Tue, 30 Aug 2016 11:14:13 -0700 Subject: [A] PanGestureRecognizer will consistently send Completed event (#313) * Adjust gallery page for reproduction * [A] Forward OnTouchEvent to Listener... ...and end scrolling on Up. --- Xamarin.Forms.Platform.Android/InnerGestureListener.cs | 8 +++++++- Xamarin.Forms.Platform.Android/VisualElementRenderer.cs | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) (limited to 'Xamarin.Forms.Platform.Android') diff --git a/Xamarin.Forms.Platform.Android/InnerGestureListener.cs b/Xamarin.Forms.Platform.Android/InnerGestureListener.cs index f83a1ac7..8611af2d 100644 --- a/Xamarin.Forms.Platform.Android/InnerGestureListener.cs +++ b/Xamarin.Forms.Platform.Android/InnerGestureListener.cs @@ -38,12 +38,18 @@ namespace Xamarin.Forms.Platform.Android } // This is needed because GestureRecognizer callbacks can be delayed several hundred milliseconds - // which can result in the need to resurect this object if it has already been disposed. We dispose + // which can result in the need to resurrect this object if it has already been disposed. We dispose // eagerly to allow easier garbage collection of the renderer internal InnerGestureListener(IntPtr handle, JniHandleOwnership ownership) : base(handle, ownership) { } + internal void OnTouchEvent(MotionEvent e) + { + if (e.Action == MotionEventActions.Up) + EndScrolling(); + } + bool GestureDetector.IOnDoubleTapListener.OnDoubleTap(MotionEvent e) { if (_tapDelegate == null || _tapGestureRecognizers == null) diff --git a/Xamarin.Forms.Platform.Android/VisualElementRenderer.cs b/Xamarin.Forms.Platform.Android/VisualElementRenderer.cs index 5274f897..404dd23e 100644 --- a/Xamarin.Forms.Platform.Android/VisualElementRenderer.cs +++ b/Xamarin.Forms.Platform.Android/VisualElementRenderer.cs @@ -98,6 +98,9 @@ namespace Xamarin.Forms.Platform.Android ScaleGestureDetectorCompat.SetQuickScaleEnabled(_scaleDetector.Value, true); handled = _scaleDetector.Value.OnTouchEvent(e); } + + _gestureListener?.OnTouchEvent(e); + return _gestureDetector.Value.OnTouchEvent(e) || handled; } -- cgit v1.2.3