You can draw a quadCurve (one control point Bezier curve) in drawRect using variables as control points, and then update the control points in the touchesBegan method as follows. Note that you need to redraw with setNeedsDisplay
- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
controlPoint = [[touches anyObject] locationInView:self];
[self setNeedsDisplay];
}
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
CGContextSetLineWidth(context, 1.0);
CGContextMoveToPoint(context, 0, 320);
CGContextAddQuadCurveToPoint(context, controlPoint.x, controlPoint.y, 320, 200);
CGContextStrokePath(context);
}
If you have multiple control points, then some visual elements and extra logic is required in the touchesMoved method... e