2013-02-26 99 views
0

當用戶點擊屏幕時,應在用戶觸摸的位置繪製圓圈。我的代碼有什麼問題?當用戶觸摸時產生圓圈

{ 
    BOOL _touchHasBegun; 
    CGPoint whereUserClicked; 
    float pointWhereUserClickedX; 
    float pointWhereUserClickedY; 
} 

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    _touchHasBegun = YES; 
} 

- (void)drawRect:(CGRect)rect 
{ 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetRGBStrokeColor(context, 0, 0, 225, 1); 
    CGContextSetRGBFillColor(context, 0, 0, 255, 1); 
    CGRect rectangle = CGRectMake(pointWhereUserClickedX, pointWhereUserClickedY, 10, 10); 
    CGContextStrokeEllipseInRect(context, rectangle); 
} 
+0

爲什麼會發生什麼? – trojanfoe 2013-02-26 11:54:36

回答

0

首先,你需要調用setNeedsDisplay強制drawRect:被調用。這可以通過觸摸事件處理程序完成。

其次,你並沒有畫出圓圈左右的觸點,而是你用觸點作爲圓的拐角。

這應該更正:

const CGFloat width = 10.0; 
const CGFloat height = 10.0; 
CGRect rectangle = CGRectMake(pointWhereUserClickedX - (width/2.0), 
           pointWhereUserClickedY + (height/2.0), 
           width, 
           height);