【问题标题】:How to detect if the user is holding the iPhone with his hand如何检测用户是否用手拿着 iPhone
【发布时间】:2011-11-03 17:39:45
【问题描述】:

我正在寻找一种方法来确定用户是否在 Objective-c 中用手拿着他的 iPhone。 问题是由于某些原因,当用户将他的 iPhone 放在某物(桌子、椅子、沙发等)上并仅用一只手使用时,我的 iPhone 游戏中的多点触控层无法按预期工作。它不依赖于方向。

任何帮助表示赞赏!

谢谢。

【问题讨论】:

  • 一些 iPhone 有一个很棒的内置功能:只需检查信号强度...
  • @kapep:如果我可以评论的话,我会 +100。
  • @Marco 听起来你是想把水从船上捞出来,而不是修复上面的洞。对你来说,直接解决它不起作用的问题比创建新的东西来间接解决问题要好。
  • @Jonathan 我已经对其进行了很多测试,结果如下: 1. 我将 iPhone 放在桌子上,用右手触摸它,在某个点多点触控层变得不准确 2 . 我用另一只手轻轻触摸 iPhone 的边缘,甚至没有移动 iPhone,图层开始完美工作。我开始认为它不依赖于我的代码。此外,我的游戏以一种非常特殊的方式使用了多点触控,但当我将 iPhone 握在手中并且我已经测试了几个月时,仍然没有任何问题。
  • @Marco,我会在别人的设备上试一试(最好是同一型号,另一个型号不同),以确定它是否是您的手机,不应该触摸您的手机对触摸屏的准确性有任何影响。

标签: iphone objective-c multi-touch


【解决方案1】:

使用 CMMotionManager。

http://developer.apple.com/library/ios/#documentation/CoreMotion/Reference/CMMotionManager_Class/Reference/Reference.html

只需跟踪设备“userAcceleration”的变化并进行分析。如果它没有改变,你可以猜到它在一个不动的物体上。如果它发生变化,你可以猜到它已经到了用户的手中。问题是它可能并不完美,需要一些精确的调整和调试才能找到你可以测试的正确值(想法:你应该做一些测试,看看如果 iPhone 在一个非移动的物体上变成像一个移动的物体会发生什么情况汽车、公共汽车、火车……)。

但这应该可行。

【讨论】:

  • +1 因为我认为这是对我最初问题的正确答案。不幸的是,我意识到这对我来说还不够好,因为戴手套或使用厚盖的人可能仍然存在问题。我会在某个时候接受它作为答案,但我想暂时保持开放。谢谢。
【解决方案2】:

您需要弄清楚多点触控层的实现有什么问题,这意味着它没有被正确激活,除非设备被握在某人的手中,而不是试图覆盖一个杂物。握在手中的设备几乎可以肯定只是代表层工作与不工作之间的条件的真正差异......你需要弄清楚条件的真正差异是什么。

例如:也许您只有在图层中的其他位置存在静止触摸时才正确记录多点触控运动 - 握住设备时的无意触摸?

【讨论】:

  • 谢谢邓肯,我一直在想你所说的,但它似乎真的与设备有关。正如我所写的,如果我将 iPhone 放在桌子上,用右手轻敲,然后用左手轻轻触摸边缘(而不是屏幕),一切正常。换句话说,我不需要拿着它来让它工作。此外,当我处于调试模式并且我只使用右手时,问题不会发生,因为电缆已插入并且可以正常工作。如您所知,调试起来非常棘手!
  • 嗯。某种大规模的静电问题?这可能会影响触摸屏的性能。您说您尝试过多种设备...您是否尝试过多个tables?比如在完全不同的环境中?轻轻触摸手机侧面和插入电缆都有可能使设备接地……这可能就是正在发生的事情。 :)
  • 是的,我在不同的表面上尝试过。它发生在桌子、沙发、椅子上,总是产生相同的结果。我可能应该试着用厚手套拿着它,也许是热的问题?
  • 刚戴上手套试了一下,问题还是很明显,但没那么严重。我同意你的观点,我的手可能正在将设备接地,你认为我能做些什么吗?
  • 所以戴上手套,问题出在手握和不接触设备之间?这确实倾向于支持它与静电荷有关的想法。我现在看到上面的奥利弗也提出了同样的建议——我没有看到。我真的看不出热量会有什么不同,除了一个有故障的单元——如果有这种问题,就会有广泛的报道。需要深入了解为什么微小的差异会比其他人更能摆脱你的多点触控手势。过于具体的算法?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-09
  • 1970-01-01
  • 2011-11-23
  • 1970-01-01
相关资源
最近更新 更多