我正在为iPhone开发一个应用程序,我想检测用户何时沿着某条路径移动他的手指。
具体来说,我想检测用户何时沿特定的圆形路径移动手指。
这可能很容易通过沿着路径检测鼠标运动来改编。
答案 0 :(得分:1)
看起来像一个特定的案例可以相当简单地实现。将输入区域分成四个象限,并通过每个象限跟踪位置。 quandrants序列决定他们是否已经完成或走了一圈。
用于描述这个想法的伪代码:
static touchKeeper; //touch, quadrant
static touchIndex=0;
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[allTouches allObjects] objectAtIndex:0];
touchKeeper[touchIndex].touch = touch;
touchKepper[touchIndex].quadrant = DetectQuadrant(touch));
if (touchIndex > 3 && (touchKeeper[3].quadrant == touchKeeper[2].quadrant+1 == touchKeeper[1].quadrant+2 == touchKeeper[0].quadrant+3)) {
[self doCircleAction];
touchIndex=0;
}
else touchIndex++;
}
这个想法是你只需粗略地识别某个区域的特定触摸。象限例程就是这样的:
int DetectQuadrant(UITouch *touch) {
CGPoint point;
point = [touch locationInView:self];
if (endPoint.x > X1 && endPoint.x < X2 && endPoint.Y > Y1 && endPoint.Y < Y2)
return QUAD1;
} else etc
我使用象限作为一个例子 - 显然你可以画一个正方形并想'圈!'。通过在Detect方法中创建更多区域来提高准确性。主要思想是根据区域序列进行思考,以实现期望的行为,而不会出现过度复杂化(如贝塞尔曲线检测或类似的无意义)。这个伪代码肯定是野蛮的,我确信这是一种很好的方法来精确实现。对于我正在研究的项目,我一直在考虑'圆周运动检测',这是我提出的粗略想法。
享受!
答案 1 :(得分:0)
由于我不熟悉iPhone SDK本身,我不确定是否有用于捕获非标准手势的内置工具。但是,这是您可以使用的手动方式之一。
This tutorial适用于Flash,但它采用相同的手势原则。每个方向代表一个数字。使用指点设备跟踪圆圈将生成一系列数字,表示随时间或远距离行进的方向,由您决定。将该序列号与表示圆的预定义序列进行比较。如果匹配,则发起一场比赛。
有很多教程可以解释如何制作像“模糊”这样的手势,这样就不需要精确的点运动了。