Beispiel #1
0
        public override bool OnScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
        {
            bool gestureHandled = false;

            var point1 = new Xamarin.Forms.Point(e1.GetX(), e1.GetY());
            var point2 = new Xamarin.Forms.Point(e2.GetX(), e2.GetY());

            if (_activePanGesture == null && Math.Abs(point1.Distance(point2)) > ScrollThreshold)
            {
                var gestureRecognizers = new List <Tuple <MycoView, IMycoGestureRecognizerController> >();

                _container.GetGestureRecognizers(new Xamarin.Forms.Point(_context.FromPixels(e1.GetX()), _context.FromPixels(e1.GetY())), gestureRecognizers);

                foreach (var gestureRecognizer in gestureRecognizers)
                {
                    var panGesture = gestureRecognizer.Item2 as IMycoPanGestureRecognizerController;

                    if (panGesture != null)
                    {
                        _activePanGestureView = gestureRecognizer.Item1;
                        _activePanGesture     = panGesture;
                        panGesture.SendPanStarted(gestureRecognizer.Item1);
                        gestureHandled = true;
                        break;
                    }
                }
            }
            else if (_activePanGesture != null)
            {
                _activePanGesture.SendPanUpdatedWithUpdate(_activePanGestureView, _context.FromPixels(distanceX), _context.FromPixels(distanceY));
                gestureHandled = true;
            }

            return(gestureHandled);
        }
Beispiel #2
0
        private bool HandleUp(MotionEvent e)
        {
            foreach (var gesture in _activeGestures)
            {
                var point      = new Xamarin.Forms.Point(_context.FromPixels(e.GetX()), _context.FromPixels(e.GetY()));
                var isCanceled = !gesture.Item1.RenderBounds.Contains(point);
                gesture.Item2.SendTouchUp(gesture.Item1, _context.FromPixels(e.GetX()) - gesture.Item1.RenderBounds.X, _context.FromPixels(e.GetY()) - gesture.Item1.RenderBounds.Y, isCanceled);
            }

            _activeGestures.Clear();

            if (_activePanGesture != null)
            {
                if (_activePanGesture is IMycoPanGestureRecognizerController)
                {
                    (_activePanGesture as IMycoPanGestureRecognizerController).SendPanCompleted(_activePanGestureView);
                }

                _activePanGesture     = null;
                _activePanGestureView = null;

                return(true);
            }

            return(false);
        }