void OnPinchAndRotate(UIGestureRecognizer gr) { if (touchCount == 0) { touchCount++; } PinchEventArgs pinchEventArgs = new iOSPinchEventArgs(gr, _previousPinchArgs); RotateEventArgs rotateEventArgs = new iOSRotateEventArgs(gr, _previousRotateArgs); if (gr.State == UIGestureRecognizerState.Ended || gr.State == UIGestureRecognizerState.Cancelled || gr.State == UIGestureRecognizerState.Failed) { if (_previousPinchArgs == null && _previousRotateArgs == null) { return; } foreach (var listener in _listeners) { if (listener.HandlesPinching || listener.HandlesPinched) { pinchEventArgs.Listener = listener; listener.OnPinched(pinchEventArgs); if (pinchEventArgs.Handled) { break; } } } foreach (var listener in _listeners) { if (listener.HandlesRotating || listener.HandlesRotated) { rotateEventArgs.Listener = listener; listener.OnRotated(rotateEventArgs); if (rotateEventArgs.Handled) { break; } } } _previousPinchArgs = null; _previousRotateArgs = null; _pinching = false; _rotating = false; _panning = false; _longPressing = false; } else { foreach (var listener in _listeners) { if (listener.HandlesPinching) { pinchEventArgs.Listener = listener; listener.OnPinching(pinchEventArgs); if (pinchEventArgs.Handled) { break; } } } foreach (var listener in _listeners) { if (listener.HandlesRotating) { rotateEventArgs.Listener = listener; listener.OnRotating(rotateEventArgs); if (rotateEventArgs.Handled) { break; } } } _previousPinchArgs = pinchEventArgs; _previousRotateArgs = rotateEventArgs; } }
void OnPinchAndRotate(UIGestureRecognizer gr) { PinchEventArgs pinchEventArgs = new iOSPinchEventArgs(gr, _previousPinchArgs, _viewLocationAtOnDown); RotateEventArgs rotateEventArgs = new iOSRotateEventArgs(gr, _previousRotateArgs, _viewLocationAtOnDown); if (touchCount == 0) { //System.Diagnostics.Debug.WriteLine("onPinchAndRotate set _viewLocationAtOnDown"); _viewLocationAtOnDown = ViewLocationInWindow(gr.View); touchCount++; } bool handled = false; if (gr.State == UIGestureRecognizerState.Ended || gr.State == UIGestureRecognizerState.Cancelled || gr.State == UIGestureRecognizerState.Failed) { if (_previousPinchArgs == null && _previousRotateArgs == null) { return; } foreach (var listener in _listeners) { //if (handled) // break; if (listener.HandlesPinching || listener.HandlesPinched) { var taskArgs = new PinchEventArgs(pinchEventArgs); taskArgs.Listener = listener; listener.OnPinched(taskArgs); if (taskArgs.Handled) { break; } } } foreach (var listener in _listeners) { //if (handled) // break; if (listener.HandlesRotating || listener.HandlesRotated) { var taskArgs = new RotateEventArgs(rotateEventArgs); taskArgs.Listener = listener; listener.OnRotated(taskArgs); if (taskArgs.Handled) { break; } } } //gr.CancelsTouchesInView = handled; _previousPinchArgs = null; _previousRotateArgs = null; _pinching = false; _rotating = false; _panning = false; _longPressing = false; } else { foreach (var listener in _listeners) { if (listener.HandlesPinching) { var taskArgs = new PinchEventArgs(pinchEventArgs); taskArgs.Listener = listener; listener.OnPinching(taskArgs); handled = handled || pinchEventArgs.Handled; if (taskArgs.Handled) { break; } } } foreach (var listener in _listeners) { if (listener.HandlesRotating) { var taskArgs = new RotateEventArgs(rotateEventArgs); taskArgs.Listener = listener; listener.OnRotating(taskArgs); handled = handled || rotateEventArgs.Handled; if (taskArgs.Handled) { break; } } } _previousPinchArgs = pinchEventArgs; _previousRotateArgs = rotateEventArgs; } /* * foreach (var listener in _listeners) * { * //if (handled) * // break; * if (gr.State != UIGestureRecognizerState.Ended && gr.State != UIGestureRecognizerState.Cancelled && gr.State != UIGestureRecognizerState.Failed) * { * if (listener.HandlesPinching) * { * var taskArgs = new PinchEventArgs(pinchEventArgs); * taskArgs.Listener = listener; * listener.OnPinching(taskArgs); * handled = handled || pinchEventArgs.Handled; * if (taskArgs.Handled) * break; * } * } * } * foreach (var listener in _listeners) * { * //if (handled) * // break; * if (gr.State != UIGestureRecognizerState.Ended && gr.State != UIGestureRecognizerState.Cancelled && gr.State != UIGestureRecognizerState.Failed) * { * if (listener.HandlesRotating) * { * var taskArgs = new RotateEventArgs(rotateEventArgs); * taskArgs.Listener = listener; * listener.OnRotating(taskArgs); * handled = handled || rotateEventArgs.Handled; * if (taskArgs.Handled) * break; * } * } * } * _previousPinchArgs = pinchEventArgs; * _previousRotateArgs = rotateEventArgs; * //gr.CancelsTouchesInView = handled; * if (handled) * return; * if (_previousPinchArgs == null && _previousRotateArgs == null) * return; * foreach (var listener in _listeners) * { * //if (handled) * // break; * if (listener.HandlesPinching || listener.HandlesPinched) * { * var taskArgs = new PinchEventArgs(pinchEventArgs); * taskArgs.Listener = listener; * listener.OnPinched(taskArgs); * if (taskArgs.Handled) * break; * } * } * foreach (var listener in _listeners) * { * //if (handled) * // break; * if (listener.HandlesRotating || listener.HandlesRotated) * { * var taskArgs = new RotateEventArgs(rotateEventArgs); * taskArgs.Listener = listener; * listener.OnRotated(taskArgs); * if (taskArgs.Handled) * break; * } * } * //gr.CancelsTouchesInView = handled; * _previousPinchArgs = null; * _previousRotateArgs = null; * _pinching = false; * _rotating = false; * _panning = false; * _longPressing = false; */ }