void OnTappedTimerElapsed(object sender, ElapsedEventArgs e) { TappedTimerStop(); if (!_panning && !_longPressed && !_pinching && !_rotating) { Xamarin.Forms.Device.BeginInvokeOnMainThread(() => { if (_listeners == null) { return; } var _view = (Android.Views.View)_weakReferenceView?.Get(); if (_view == null || _listeners == null || !_listeners.Any()) { return; } bool tappedHandled = false; foreach (var listener in _listeners) { if (listener.HandlesTapped) { TapEventArgs taskArgs = new AndroidTapEventArgs(_tappedTimerUpMotionEvent, _view, _tappedTimerNumberOfTaps, _viewLocationAtOnDown); taskArgs.Listener = listener; listener.OnTapped(taskArgs); tappedHandled = taskArgs.Handled; if (tappedHandled) { break; } } } _numberOfTaps = 0; }); } //_panning = false; //_longPressed = false; }
public bool OnUp(MotionEvent ev) { //System.Diagnostics.Debug.WriteLine("NativeGestureListener." + P42.Utils.ReflectionExtensions.CallerMemberName() + " action:" + ev.Action + " index" + ev.ActionIndex + " e:" + ev); if (ev.Action != MotionEventActions.Up) { return(false); } var touchDuration = DateTime.Now - _onDownDateTime; _numberOfTaps++; LongPressingTimerStop(); TappedTimerStart(ev, _numberOfTaps); var _view = (Android.Views.View)_weakReferenceView?.Get(); if (_view == null || _listeners == null || !_listeners.Any()) { return(false); } bool handled = false; foreach (var listener in _listeners) { if (listener.HandlesUp) { DownUpEventArgs args = new AndroidDownUpEventArgs(ev, _view, _viewLocationAtOnDown); args.Listener = listener; listener.OnUp(args); handled |= args.Handled; //if (args.Handled) // break; } } if (_panning) { _numberOfTaps = 0; foreach (var listener in _listeners) { if (listener.HandlesPanned) { PanEventArgs args = new AndroidPanEventArgs(LastPan ?? Start, ev, LastPanArgs, _view, _viewLocationAtOnDown); args.Listener = listener; listener.OnPanned(args); handled |= args.Handled; //if (args.Handled) // break; } } } else if (_longPressed) { foreach (var listener in _listeners) { if (listener.HandlesLongPressed) { LongPressEventArgs args = new AndroidLongPressEventArgs(Start, ev, _view, _viewLocationAtOnDown); args.Listener = listener; listener.OnLongPressed(args); handled |= args.Handled; //if (args.Handled) // break; } } } else if (!_pinching && !_rotating) { foreach (var listener in _listeners) { if (listener.HandlesTapping) { TapEventArgs args = new AndroidTapEventArgs(ev, _view, _numberOfTaps, _viewLocationAtOnDown); args.Listener = listener; listener.OnTapping(args); handled |= args.Handled; //if (args.Handled) // break; } } if (_numberOfTaps % 2 == 0) { foreach (var listener in _listeners) { if (listener.HandlesDoubleTapped) { TapEventArgs args = new AndroidTapEventArgs(ev, _view, _numberOfTaps, _viewLocationAtOnDown); args.Listener = listener; listener.OnDoubleTapped(args); handled |= args.Handled; //if (args.Handled) // break; } } } } LastPanArgs = null; LastPan = null; return(handled); }