// 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); }
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); }
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); } }
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; }