我在写作时正在使用多点触控,所以基本上我正在做的是,我正在用手支持写作,因为通常,它是用户写的方式,我是按照这个链接How to ignore certain UITouch Points in multitouch sequence
一触即可正常工作,但是当我用手触摸屏幕,即多个UItouches时,它们是一个问题 以下是我的代码
接触开始时,我经历了所有触摸,我找到了y位置最高的触摸,下面是我的代码
以下是我的代码
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch* topmostTouch = self.trackingTouch;
for (UITouch *touch in touches)
{
ctr = 0;
touchStartPoint1 = [touch locationInView:self];
if(!topmostTouch || [topmostTouch locationInView:self].y > touchStartPoint1.y)
{
topmostTouch = touch;
pts[0] = touchStartPoint1;
}
}
self.trackingTouch = topmostTouch;
}
接触移动。我只会采取自我跟踪触摸,我在接触中找到了开始
我接触移动代码
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
if(self.trackingTouch== nil)
{
return;
}
CGPoint p = [self.trackingTouch locationInView:self];
ctr++;
pts[ctr] = p;
if (ctr == 4)
{
pts[3] = midPoint(pts[2], pts[4]);
self.currentPath = [[DrawingPath alloc] init];
[self.currentPath setPathColor:self.lineColor];
self.currentPath.pathWidth = [NSString stringWithFormat:@"%f",self.lineWidth];
[self.currentPath.path moveToPoint:pts[0]];
[self.currentPath.path addCurveToPoint:pts[3] controlPoint1:pts[1] controlPoint2:pts[2]];
[self setNeedsDisplay];
pts[0] = pts[3];
pts[1] = pts[4];
ctr = 1;
}
}
此处提供的是分别用单点触控和多点触控写入的图像
你可以看到,当我单手触摸时,我的写作是平滑的,曲线是平滑的,但是当我用手休息写字时,我的曲线变得锯齿状,正如你在第二张图片中看到的那样。
所以朋友们,请帮帮我
答案 0 :(得分:0)
假设绘图代码完全相同,差异只是处理额外触摸的额外开销。循环处理这些,循环绘制,一切至少加倍..所以当你处理触摸然后在手指#2上画画时,在现实世界中手指#1等仍然在移动......请注意UIKit只能在每个runLoop的末尾绘制。我认为没有办法解决这个问题,正如我之前告诉过你的那样,我怀疑有很多人会重视多点接触的能力,尽管这可能是我有限的,英语,澳大利亚的观点。它。祝你好运
答案 1 :(得分:0)
我终于解决了我的问题,
这是代码
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch* topmostTouch = self.trackingTouch;
for (UITouch *touch in touches)
{
touchStartPoint1 = [touch locationInView:self];
if(!topmostTouch || [topmostTouch locationInView:self].y > touchStartPoint1.y)
{
ctr = 0;
topmostTouch = touch;
pts[0] = touchStartPoint1;
}
}
self.trackingTouch = topmostTouch;
}
问题非常简单,只需在支票内设置ctr = 0,就像这样..