gpt4 book ai didi

ios - 如何在多点触控序列中有效地处理 UITouches

转载 作者:行者123 更新时间:2023-12-01 16:43:42 25 4
gpt4 key购买 nike

我在写作时使用多点触控,所以基本上我所做的是,我在手部支持下写作,因为通常情况下,它是用户书写的方式,我点击了此链接 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;
}

在touches moved.中,我只会取self.trackingTouch,这是我在touches Began中找到的

我的触摸在下面移动了代码

-(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;
}
}

这里分别是单点触摸和多点触摸书写的图像供您引用

enter image description here

enter image description here

你可以看到,当我用单点触摸书写时,我的书写很流畅,曲线很平滑,但是当我用手托书写时,我的曲线变得参差不齐,正如你在第二张图片中看到的那样。

所以 friend 们,请帮帮我

最佳答案

假设绘图代码完全相同,区别仅在于处理额外触摸的额外开销。循环处理这些,循环绘制,一切都至少翻了一番。所以当你处理触摸然后在手指 #2 上绘制时,在现实世界中手指 #1 等仍在移动......请注意UIKit 只能在每个 runLoop 结束时绘制。我不认为有任何办法解决这个问题,正如我之前告诉你的,我怀疑有很多人会重视多次触摸绘图的能力,尽管这很可能是我有限的、讲英语的澳大利亚人对绘画的看法它。祝你好运

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com