Iphone SDK触动事件
为了更好地理解触摸,我写了几行文字来记录触摸:Iphone SDK触动事件,iphone,cocoa-touch,Iphone,Cocoa Touch,为了更好地理解触摸,我写了几行文字来记录触摸: -(void)drawRect:(CGRect)rect{ NSLog(“我的画”); CGContextRef context=UIGraphicsGetCurrentContext(); CGContextSetLineWidth(上下文,2); CGContextSetStrokeColorWithColor(上下文[UIColor redColor].CGColor); CGContextMoveToPoint(上下文,上一个x,上一个y)
-(void)drawRect:(CGRect)rect{
NSLog(“我的画”);
CGContextRef context=UIGraphicsGetCurrentContext();
CGContextSetLineWidth(上下文,2);
CGContextSetStrokeColorWithColor(上下文[UIColor redColor].CGColor);
CGContextMoveToPoint(上下文,上一个x,上一个y);
CGContextAddLineToPoint(上下文,cur.x,cur.y);
CGContextStrokePath(上下文);
返回;
}
-(无效)触摸移动:(NSSet*)触摸事件:(UIEvent*)事件
{
UITouch*touch=[触摸任何对象];
prev=[触摸previousLocationInView:self];
cur=[触摸位置查看:自];
[self-setNeedsDisplayInRect:CGRectMake(上一个x,上一个y,晶圆厂(当前x-上一个x),晶圆厂(当前y-上一个y));
}
很明显,我的setNeedsDisplay不正确,因为它只适用于从正坐标到负坐标(从左上角到右下角)的移动。带着这些问题:
谢谢
setNeedsDisplay
不会立即调用drawRect
。事实上,在下次绘制视图之前,touchsmoved
可能会被多次调用,这就是为什么您会看到虚线。您对CGRectMake的调用应该是:
CGRectMake (MIN(cur.x, prev.x), MIN (cur.y, prev.y), fabs (cur.x-prev.x), fabs (cur.y - prev.y))
在我的代码中,我用一个函数从任意两点生成一个rect来概括它,例如:
CGRect rectWithPoints(CGPoint a, CGPoint b)
{
return CGRectMake(
MIN (a.x, b.x),
MIN (a.y, b.y),
fabs (a.x - b.x),
fabs (a.y - b.y));
}
你已经问了17个问题,但没有接受任何一个问题的答案。这可能会阻止其他人花时间为您提供任何答案。只是提醒一下。谢谢,我试试看。这对断线仍然没有帮助,是吗?我在网上找到了一些教程,它会在每条线段后将每个屏幕作为一个图像记住,然后渲染图像并向其添加下一组移动。这种方法根本不需要setNeedsDisplay。