使用单声道触摸为ios构建具有电子签名function的应用程序?

这只是一个快速的问题,因为我用谷歌搜索并且只找到已经具有此function的应用程序 – 但我如何创建一个能够捕获电子签名的应用程序……这可能吗?

Xamarin的Component Store有一个Signature Pad组件可以做到这一点。

我也从头开始编写类似的东西 – 这并不是特别困难。 代码看起来像这样:

public class DrawView : UIView { DrawViewController dvc; // clear the canvas public void Clear () { drawPath.Dispose (); drawPath = new CGPath (); fingerDraw = false; SetNeedsDisplay (); } // pass in a reference to the controller, although I never use it and could probably remove it public DrawView (RectangleF frame, DrawViewController root) : base(frame) { dvc = root; this.drawPath = new CGPath (); this.BackgroundColor = UIColor.White; } private PointF touchLocation; private PointF prevTouchLocation; private CGPath drawPath; private bool fingerDraw; public override void TouchesBegan (MonoTouch.Foundation.NSSet touches, UIEvent evt) { base.TouchesBegan (touches, evt); UITouch touch = touches.AnyObject as UITouch; this.fingerDraw = true; this.touchLocation = touch.LocationInView (this); this.prevTouchLocation = touch.PreviousLocationInView (this); this.SetNeedsDisplay (); } public override void TouchesMoved (MonoTouch.Foundation.NSSet touches, UIEvent evt) { base.TouchesMoved (touches, evt); UITouch touch = touches.AnyObject as UITouch; this.touchLocation = touch.LocationInView (this); this.prevTouchLocation = touch.PreviousLocationInView (this); this.SetNeedsDisplay (); } public UIImage GetDrawingImage () { UIImage returnImg = null; UIGraphics.BeginImageContext (this.Bounds.Size); using (CGContext context = UIGraphics.GetCurrentContext()) { context.SetStrokeColor (UIColor.Black.CGColor); context.SetLineWidth (5f); context.SetLineJoin (CGLineJoin.Round); context.SetLineCap (CGLineCap.Round); context.AddPath (this.drawPath); context.DrawPath (CGPathDrawingMode.Stroke); returnImg = UIGraphics.GetImageFromCurrentImageContext (); } UIGraphics.EndImageContext (); return returnImg; } public override void Draw (RectangleF rect) { base.Draw (rect); if (this.fingerDraw) { using (CGContext context = UIGraphics.GetCurrentContext()) { context.SetStrokeColor (UIColor.Black.CGColor); context.SetLineWidth (5f); context.SetLineJoin (CGLineJoin.Round); context.SetLineCap (CGLineCap.Round); this.drawPath.MoveToPoint (this.prevTouchLocation); this.drawPath.AddLineToPoint (this.touchLocation); context.AddPath (this.drawPath); context.DrawPath (CGPathDrawingMode.Stroke); } } } }