首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用iphone进行挺举或投掷动作检测

用iphone进行挺举或投掷动作检测
EN

Stack Overflow用户
提问于 2012-03-09 15:39:20
回答 1查看 791关注 0票数 0

我正在做一个扔石头的应用程序,显示一个石头跳过水。我想要做的是,当手从一边快速地移动到前面(就像你在跳石头一样)时,检测到一个动作。我尝试了下面的代码,这是我在日志中得到的结果。有我能用的手势检测吗?

代码语言:javascript
复制
-(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时,这就是我得到的(两者都会发生)。

有东西动了,但我不知道发生了什么. 有东西动了,但我不知道发生了什么. 有东西动了,但我不知道发生了什么.

而且,我不得不付出很大的努力才能让检测工作正常进行。所以有两个问题

  • 是否有内置的阈值号码,我可以覆盖?
  • 只有手机向前移动,我才能告诉它做这个动作?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2012-03-09 17:04:22

如果您看到了用于UIEvent的类引用,您就会意识到,唯一与运动相关的事件子类型是UIEventSubtypeMotionShake,这意味着您只能从该事件中知道设备受到了震动。

要实现你想要达到的目标,你必须直接使用加速度计值。

这意味着,首先,你必须对加速度计在进行特定运动时返回的值以及运动的不同步骤进行一些测试。你还必须得到运动仍然有意义的值范围。

然后,你需要将这些值集成到你的应用程序中,基本上,你必须做的是,在你的加速度计代表中,检查,在运动的每一步,加速度计给你的数值都在你测试的范围之内。

别在公园里散步了,请注意。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9636777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档