title: Clear UIView of drawing?
body: <p>I am using a subclass of UIView to draw, this subclassed view is used to get your signature on a view controller. There is a clear button which is supposed to clear the UIView except it doesn't work. Here is what I have tried.</p>
  
  <p>subclass.h</p>
  
  <pre><code>@implementation subclassed uiview
  {
      UIBezierPath *path;
      UIImage *incrementalImage; // (1)
  }
  
  - (id)initWithCoder:(NSCoder *)aDecoder {
      if (self = [super initWithCoder:aDecoder]) {
          [self setMultipleTouchEnabled:NO];
          [self setBackgroundColor:[UIColor clearColor]];
          path = [UIBezierPath bezierPath];
          [path setLineWidth:2.0];
      }
      return self;
  }
  
  - (void)drawRect:(CGRect)rect {
      [incrementalImage drawInRect:rect]; // (3)
      [path stroke];
  }
  
  - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
      UITouch *touch = [touches anyObject];
      CGPoint p = [touch locationInView:self];
      [path moveToPoint:p];
  }
  
  - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
      UITouch *touch = [touches anyObject];
      CGPoint p = [touch locationInView:self];
      [path addLineToPoint:p];
      [self setNeedsDisplay];
  }
  
  - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event // (2)
  {
      UITouch *touch = [touches anyObject];
      CGPoint p = [touch locationInView:self];
      [path addLineToPoint:p];
      [self drawBitmap]; // (3)
      [self setNeedsDisplay];
      [path removeAllPoints]; //(4)
  }
  
  - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
      [self touchesEnded:touches withEvent:event];
  }
  
  - (void)drawBitmap // (3)
  {
      UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, 0.0);
      //[[UIColor blackColor] setStroke];
      if (!incrementalImage) { // first draw;
          UIBezierPath *rectpath = [UIBezierPath bezierPathWithRect:self.bounds]; // enclosing bitmap by a rectangle defined by another UIBezierPath object
          [[UIColor clearColor] setFill];
          [rectpath fill]; // fill it
      }
      [incrementalImage drawAtPoint:CGPointZero];
      [path stroke];
      incrementalImage = UIGraphicsGetImageFromCurrentImageContext();
      UIGraphicsEndImageContext();
  }
  
  @end
  </code></pre>
  
  <p>view controller.m</p>
  
  <pre><code>- (IBAction)clearTapped:(id)sender {
      self.subclassedView.backgroundColor = [UIColor clearColor];
      CGContextRef context = UIGraphicsGetCurrentContext();
      CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor);
      CGContextFillRect(context,self.subclassedView.bounds);
      CGContextClearRect(context, self.subclassedView.bounds);
      CGContextFlush(context);
      [self.subclassedView setNeedsDisplay];
  }
  </code></pre>
  
  <p>Can anyone tell me why this doesn't work, and what I should do instead?</p>