我在写作时正在使用多点触摸,所以基本上我在做的是在手支持下进行写作,因为通常情况下,这是用户的写作方式,因此我关注了此链接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;
}

在感动的触摸中,我只会使用self.trackingTouch,我在触摸中发现它开始

我的感动下面的代码已移动
-(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;
    }
}

供您参考,分别是单点触控和多点触控的书写图像



您可以看到,当我单点触摸书写时,笔迹平滑,曲线平滑,但是当我用手握住笔迹时,曲线变得锯齿,如第二幅图所示。

friend 们,请帮帮我

最佳答案

假设绘图代码相同,则区别只是处理额外触摸的额外开销。循环处理这些东西,循环进行绘画,至少一切都翻了一番。。因此,当您在处理触摸然后在手指#2上绘画时,在现实世界中,手指#1等仍在移动...请注意UIKit只能在每个runLoop的末尾绘制。我认为没有办法解决这个问题,正如我之前告诉您的那样,我怀疑还有很多人会珍视多点触控的能力,尽管这很可能是我对澳大利亚英语的有限观点它。祝好运

关于ios - 如何以多点触控顺序有效处理UITouch,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21952274/

10-09 21:26