我正在尝试创建一个简单的绘图应用程序,无论你把手指放在哪里都能创建圆圈,这就是我所拥有的:
@synthesize touchPos;
@synthesize coords;
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
touchPos = [touch locationInView:self.view];
coords.text = [NSString stringWithFormat:@"%3.0f, %3.0f", touchPos.x, touchPos.y];
[self setNeedsDisplay];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
[self touchesBegan:touches withEvent:event];
}
- (void)drawRect:(CGRect)rect
{
CGContextRef contextRef = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(contextRef, 2.0);
CGContextSetRGBFillColor(contextRef, 0, 0, 1.0, 1.0);
CGContextSetRGBStrokeColor(contextRef, 0, 0, 1.0, 1.0);
CGRect circlePoint = (CGRectMake(touchPos.x, touchPos.y, 10.0, 10.0));
CGContextFillEllipseInRect(contextRef, circlePoint);
}
我没有得到任何错误或警告,它只是没有画任何东西。此外,文本框显示我正在触摸的坐标,所以我知道这不是问题。
答案 0 :(得分:3)
此代码需要位于UIView子类中,该子类是当前视图层次结构的一部分。
答案 1 :(得分:1)
答案 2 :(得分:0)
问题是-drawRect:
没有被调用,因为,这是正确的,你在UIViewController中编写这段代码。您需要创建UIView
的子类并将所有这些绘图和事件处理移动到它。您需要更改的唯一内容是self.view
,因为在UIView
的子类中,您只需要说self
。拥有自定义UIView
子类后,您可以使用界面构建器将UIViewController
的类设置为自定义类。