public override void MouseEntered(NSEvent theEvent)
        {
            if (effect?.Element == null || effect.IsDisabled)
            {
                return;
            }

            effect?.HandleHover(HoverStatus.Entered);
        }
        public override void MouseEntered(NSEvent theEvent)
        {
            if (effect?.IsDisabled ?? true)
            {
                return;
            }

            effect?.HandleHover(HoverStatus.Entered);
        }
        void OnPointerEntered(object sender, PointerRoutedEventArgs e)
        {
            if (effect?.IsDisabled ?? true)
            {
                return;
            }

            effect?.HandleHover(HoverStatus.Entered);

            if (isPressed)
            {
                effect?.HandleTouch(TouchStatus.Started);
                AnimateTilt(pointerDownStoryboard);
            }
        }
Ejemplo n.º 4
0
        void OnTouchMove(object sender, AView.TouchEventArgs e)
        {
            if (IsCanceled)
            {
                return;
            }

            var diffX   = Math.Abs(e.Event.GetX() - startX) / View.Context.Resources.DisplayMetrics.Density;
            var diffY   = Math.Abs(e.Event.GetY() - startY) / View.Context.Resources.DisplayMetrics.Density;
            var maxDiff = Math.Max(diffX, diffY);
            var disallowTouchThreshold = effect.DisallowTouchThreshold;

            if (disallowTouchThreshold > 0 && maxDiff > disallowTouchThreshold)
            {
                HandleEnd(TouchStatus.Canceled);
                return;
            }

            var view = sender as AView;

            if (view == null)
            {
                return;
            }

            var screenPointerCoords = new Point(view.Left + e.Event.GetX(), view.Top + e.Event.GetY());
            var viewRect            = new Rectangle(view.Left, view.Top, view.Right - view.Left, view.Bottom - view.Top);
            var status = viewRect.Contains(screenPointerCoords) ? TouchStatus.Started : TouchStatus.Canceled;

            if (isHoverSupported && ((status == TouchStatus.Canceled && effect.HoverStatus == HoverStatus.Entered) ||
                                     (status == TouchStatus.Started && effect.HoverStatus == HoverStatus.Exited)))
            {
                effect?.HandleHover(status == TouchStatus.Started ? HoverStatus.Entered : HoverStatus.Exited);
            }

            if (effect.Status != status)
            {
                effect?.HandleTouch(status);
                if (status == TouchStatus.Started)
                {
                    StartRipple(e.Event.GetX(), e.Event.GetY());
                }
                if (status == TouchStatus.Canceled)
                {
                    EndRipple();
                }
            }
        }
        void OnHover()
        {
            if (effect == null || effect.IsDisabled)
            {
                return;
            }

            switch (hoverGesture?.State)
            {
            case UIGestureRecognizerState.Began:
            case UIGestureRecognizerState.Changed:
                effect?.HandleHover(HoverStatus.Entered);
                break;

            case UIGestureRecognizerState.Ended:
                effect?.HandleHover(HoverStatus.Exited);
                break;
            }
        }
        public override void MouseDragged(NSEvent mouseEvent)
        {
            if (effect?.Element == null || effect.IsDisabled)
            {
                return;
            }

            var status = ViewRect.Contains(mouseEvent.LocationInWindow.ToPoint()) ? TouchStatus.Started : TouchStatus.Canceled;

            if ((status == TouchStatus.Canceled && effect.HoverStatus == HoverStatus.Entered) ||
                (status == TouchStatus.Started && effect.HoverStatus == HoverStatus.Exited))
            {
                effect?.HandleHover(status == TouchStatus.Started ? HoverStatus.Entered : HoverStatus.Exited);
            }

            if (effect?.Status != status)
            {
                effect?.HandleTouch(status);
            }

            base.MouseDragged(mouseEvent);
        }