我正在做一个扔石头的应用程序,显示一个石头跳过水。我想要做的是,当手从一边快速地移动到前面(就像你在跳石头一样)时,检测到一个动作。我尝试了下面的代码,这是我在日志中得到的结果。有我能用的手势检测吗?
-(void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
if (event.subtype == UIEventSubtypeEndSeekingForward)
{
NSLog(@" Forward event ...");
}
else
{
NSLog(@" Something moved but I dont know what event ...");
}
if ([super respondsToSelector:@selector(motionEnded:withEvent:)])
[super motionEnded:motion withEvent:event];
}
-(BOOL)canBecomeFirstResponder
{
return YES;
}
-(void) viewWillAppear:(BOOL)animated
{
[self becomeFirstResponder];
[super viewWillAppear:animated];
}
- (void) viewWillDisappear:(BOOL)animated
{
[self resignFirstResponder];
[super viewWillDisappear:animated];
}当我快速地来回移动我的iPhone时,这就是我得到的(两者都会发生)。
有东西动了,但我不知道发生了什么. 有东西动了,但我不知道发生了什么. 有东西动了,但我不知道发生了什么.
而且,我不得不付出很大的努力才能让检测工作正常进行。所以有两个问题
谢谢
发布于 2012-03-09 17:04:22
如果您看到了用于UIEvent的类引用,您就会意识到,唯一与运动相关的事件子类型是UIEventSubtypeMotionShake,这意味着您只能从该事件中知道设备受到了震动。
要实现你想要达到的目标,你必须直接使用加速度计值。
这意味着,首先,你必须对加速度计在进行特定运动时返回的值以及运动的不同步骤进行一些测试。你还必须得到运动仍然有意义的值范围。
然后,你需要将这些值集成到你的应用程序中,基本上,你必须做的是,在你的加速度计代表中,检查,在运动的每一步,加速度计给你的数值都在你测试的范围之内。
别在公园里散步了,请注意。
https://stackoverflow.com/questions/9636777
复制相似问题