views:

16

answers:

1

so i want to do something which seems pretty simple but is proving other wise, i want to just draw a square at the point that touch i registered. i cant seem to get it to work though. in touchesBegan i am calling a custom method called drawSquare that is sent a CGRect. i know i must be doing something simple wrong but i don't know enough about drawing primitives in xcode/cocoa-touch. any help would be greatly appreciated. also here is my code:

- (void)drawSquare:(CGRect)rect{
    //Get the CGContext from this view
    CGContextRef context = UIGraphicsGetCurrentContext();
    //Draw a rectangle
    CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
    //Define a rectangle
    CGContextAddRect(context, rect);
    //Draw it
    CGContextFillPath(context); 
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{   
    for (UITouch *touch in touches) {


        // gets the coordinats of the touch with respect to the specified view. 
        CGPoint touchPoint = [touch locationInView:self];
    CGRect rect = CGRectMake(touchPoint.x, touchPoint.y, 50, 50);
    [self drawSquare:rect];         
    }   
}
A: 

Don't try to do your drawing in your event methods. Update your list of what you want to draw, and send -setNeedsDisplay.

NSResponder
can you explain this further?
Joe