Esempio n. 1
0
 // this doesn't seem to work.
 async void PreviewAreaTappedToChangeFocus(UIGestureRecognizer tap)
 {
     try {
         Debug.WriteLine("DHB:CameraServices_iOS:PreviewAreaTappedToChangeFocus tap");
         captureDevice.FocusPointOfInterest = tap.LocationOfTouch(0, tap.View);
     } catch (Exception err) {
         Debug.WriteLine("DHB:Exception " + err.ToString());
     }
 }
        public static Xamarin.Forms.Point[] GetTouches(UIGestureRecognizer gestureRecognizer, CGPoint locationAtStart)
        {
            nint numberOfTouches = gestureRecognizer.NumberOfTouches;
            var  array           = new Xamarin.Forms.Point[numberOfTouches];

            for (int i = 0; i < numberOfTouches; i++)
            {
                //var viewPoint = gestureRecognizer.LocationOfTouch(i, gestureRecognizer.View);
                //var windowPoint = gestureRecognizer.View.ConvertPointToView (viewPoint, null);
                var windowPoint = gestureRecognizer.LocationOfTouch(i, null);

                array[i] = new Xamarin.Forms.Point(windowPoint.X - locationAtStart.X, windowPoint.Y - locationAtStart.Y);
            }
            return(array);
        }
Esempio n. 3
0
        public static Xamarin.Forms.Point[] GetTouches(this UIGestureRecognizer gestureRecognizer, UIView view)
        {
            nint numberOfTouches = gestureRecognizer.NumberOfTouches;
            var  array           = new Xamarin.Forms.Point[numberOfTouches];

            for (int i = 0; i < numberOfTouches; i++)
            {
                /*
                 * if (view == null)
                 * {
                 *                      var page = Xamarin.Forms.Application.Current.MainPage;
                 *                      if (page is Xamarin.Forms.NavigationPage navPage)
                 *                              page = navPage.CurrentPage;
                 *                      if (Xamarin.Forms.Platform.iOS.Platform.GetRenderer(page) is Xamarin.Forms.Platform.iOS.IVisualElementRenderer renderer)
                 *                              view = renderer.NativeView;
                 * }
                 */
                var point = gestureRecognizer.LocationOfTouch(i, view);
                array[i] = point.ToPoint();
            }
            return(array);
        }
Esempio n. 4
0
        void TransformingGestureDidBeginWithGesture(UIGestureRecognizer gesture)
        {
            inFullSizeMode = false;

            if (inTransformingState && gesture is UIPinchGestureRecognizer)
            {
                pinchGesture.Scale = 2.5f;
            }

            if (inTransformingState)
            {
                inTransformingState = false;
                transformingItem.SwitchToFullSizeMode(false);
                CGAffineTransform newTransform = CGAffineTransform.MakeScale(2.5f, 2.5f);
                transformingItem.ContentView.Transform = newTransform;
                transformingItem.ContentView.Center = transformingItem.FullSizeView.Center;
            }
            else if (transformingItem==null)
            {
                PointF locationTouch = gesture.LocationOfTouch(0,this);
                int positionTouch = layoutStrategy.ItemPositionFromLocation(locationTouch);
                TransformingGestureDidBeginAtPosition(positionTouch);
            }
        }
Esempio n. 5
0
        public bool ShouldBegin(UIGestureRecognizer gestureRecognizer)
        {
            bool valid = true;
            bool isScrolling = Dragging || Decelerating;

            if (gestureRecognizer == tapGesture)
            {
                if (editing && disableEditOnEmptySpaceTap)
                {
                    PointF locationTouch = tapGesture.LocationInView(this);
                    int position = layoutStrategy.ItemPositionFromLocation(locationTouch);

                    valid = (position == GMGV_INVALID_POSITION);
                }
                else
                {
                    valid = !isScrolling && !editing && !longPressGesture.HasRecognizedValidGesture();
                }
            }
            else if (gestureRecognizer == longPressGesture)
            {
                valid = (sortingDelegate!=null || enableEditOnLongPress) && !isScrolling && !editing;
            }
            else if (gestureRecognizer == sortingPanGesture)
            {
                valid = (sortMovingItem != null && longPressGesture.HasRecognizedValidGesture());
            }
            else if(gestureRecognizer == rotationGesture || gestureRecognizer == pinchGesture || gestureRecognizer == panGesture)
            {
                if (transformDelegate != null && gestureRecognizer.NumberOfTouches == 2)
                {
                    PointF locationTouch1 = gestureRecognizer.LocationOfTouch(0,this);
                    PointF locationTouch2 = gestureRecognizer.LocationOfTouch(1,this);

                    int positionTouch1 = layoutStrategy.ItemPositionFromLocation(locationTouch1);
                    int positionTouch2 = layoutStrategy.ItemPositionFromLocation(locationTouch2);

                    valid = !editing && (IsInTransformingState || ((positionTouch1 == positionTouch2) && (positionTouch1 != GMGV_INVALID_POSITION)));
                }
                else
                {
                    valid = false;
                }
            }

            return valid;
        }