gpt4 book ai didi

objective-c - 有没有办法忽略 objective-c 中的 uitouch?

转载 作者:行者123 更新时间:2023-12-04 03:08:48 26 4
gpt4 key购买 nike

我正在尝试制作这个应用:

  1. 用户将手指放在要追踪的屏幕上。
  2. 第二根手指绕着第一根手指画出第一根手指的轮廓。(本质上只是一个忽略第一根手指在屏幕上的绘图应用程序)

问题:

它创建的不是轮廓,而是星形。似乎正在绘制的线试图连接到两个触摸点。

问题:

  1. 有没有办法忽略多点触控应用中的特定触摸?
  2. 有没有办法在单点触摸应用中取消第一次触摸?

我的代码:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{

touchCount++;
NSLog(@"Touches Count: %i", touchCount);

if(touchCount >= 2)
{
drawingTouch = [touches anyObject];
CGPoint p = [drawingTouch locationInView:self];
[path moveToPoint:p];
drawingPoints = [[NSMutableArray alloc]init];
}
else
{
//???
}


}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
NSArray *allTouches = [touches allObjects];

if(touchCount >= 2 && [allTouches count]>1)
{
UITouch *theTouch = allTouches[1];
CGPoint p = [theTouch locationInView:self];
[path addLineToPoint:p]; // (4)
[self setNeedsDisplay];
[drawingPoints addObject:[NSValue valueWithCGPoint:p]];
}


}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
[self touchesMoved:touches withEvent:event];// This was copied from a tutorial but I will remove it and see what happens.

}

最佳答案

触摸点在内部计算为触摸区域的中心;更具体地说,输出到 touchesBegantouchesMovedtouchesEnded 的点略高于中心。轮廓只能是第二根手指触摸的所有点的组合,但它会比第一根手指本身大得多。您所能做的就是围绕第一个触摸点创建一个圆圈,该圆圈与第二根手指的移动平行。

您描述的星形图案表示您没有将正确的触摸点分配给正确的手指。尝试使用指向 (NSSet *)touches 中的触摸点的指针作为 NSDictionary 中的键,并在 NSMutableArray 中收集点放入字典,每个手指一个。

在对 touchesBegantouchesMovedtouchesEnded 的后续调用中,iOS 将对同一手指的后续触摸使用相同的地址。当您跟踪指针时,您知道哪个触摸事件属于哪个手指。然后您可以决定处理哪些触摸以及忽略哪些触摸,但所有触摸都将在对 touchesBegantouchesMovedtouchesEnded 的调用中报告。

关于objective-c - 有没有办法忽略 objective-c 中的 uitouch?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25417414/

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