private void OnTouch(object sender, View.TouchEventArgs touchEventArgs) { if (_drawer == null) { return; // in case managed to trigger before focus event finished setup } float fx = touchEventArgs.Event.GetX(); float fy = touchEventArgs.Event.GetY(); var needsRefresh = false; switch (touchEventArgs.Event.Action & MotionEventActions.Mask) { case MotionEventActions.Down: _drawer.StartDrawing(fx, fy); needsRefresh = true; break; case MotionEventActions.Move: _drawer.AddPoint(fx, fy); needsRefresh = true; break; case MotionEventActions.Up: _drawer.StopDrawing(fx, fy); needsRefresh = true; break; } if (needsRefresh) { _canvas.Invalidate(); } }
public override void TouchesEnded(NSSet touches, UIEvent evt) { base.TouchesEnded(touches, evt); var touch = touches.AnyObject as UITouch; if (touch != null) { var point = touch.LocationInView(View); _drawer?.StopDrawing((float)point.X * _devicePixelMul, (float)point.Y * _devicePixelMul); } View.SetNeedsDisplay(); }