Пример #1
0
        private void OnPan(UIPanGestureRecognizer pan, Shared.Calendar calendar)
        {
            if (pan.State == UIGestureRecognizerState.Began)
            {
                var screenWidth       = UIScreen.MainScreen.Bounds.Width;
                var leftEdgeThreshold = screenWidth * 0.15f;

                var staringPoint = pan.LocationInView(null);
                if (staringPoint.X < leftEdgeThreshold)
                {
                    _isSwipingFromLeftEdge = true;
                }
            }

            if (pan.State != UIGestureRecognizerState.Ended)
            {
                return;
            }

            var velocity = pan.VelocityInView(null);

            // going right
            var isSwipingRight = velocity.X > 0;

            // going left
            var isSwipingLeft = velocity.X < 0;

            if (_isSwipingFromLeftEdge)
            {
                PullOutMainMenu();
                _isSwipingFromLeftEdge = false;
                return;
            }

            if (isSwipingRight && calendar != null)
            {
                SwipeFrame(calendar, true);
            }

            if (isSwipingLeft && calendar != null)
            {
                SwipeFrame(calendar, false);
            }
        }
Пример #2
0
        private static async void SwipeCalendar(Shared.Calendar cal, bool isSwipingRight)
        {
            if (IsViewAnimating(cal))
            {
                return;
            }

            var command = isSwipingRight ? cal.RightSwipeCommand : cal.LeftSwipeCommand;

            if (cal.IsSwipingAnimated)
            {
                await AnimateCalendarStart(!isSwipingRight, cal);

                cal.ArrowExecutionSetup(!isSwipingRight);
                command?.Execute(null);
                await AnimateCalendarEnd(cal);
            }
            else
            {
                cal.ArrowExecutionSetup(!isSwipingRight);
                command?.Execute(null);
            }
        }