如何检测用户是否用手握住iPhone

时间:2011-11-03 17:39:46

标签: iphone objective-c multi-touch

我正在寻找一种方法来确定用户是否在目标c中用手握住他的iPhone。 问题在于,由于某些原因,当用户将iPhone放在某物(桌子,椅子,沙发等)上并且仅用一只手使用iPhone时,我的iPhone游戏中的多点触控层无法正常工作。它不取决于方向。

任何帮助表示赞赏!

感谢。

2 个答案:

答案 0 :(得分:2)

您不需要尝试覆盖kludge,而是需要找出多点触控层实现的错误,这意味着它没有被正确激活,除非设备被握在手中。握在手中的设备几乎可以肯定只是代表当层工作时和不工作时之间条件的真正差异......你需要弄清楚条件的真正区别是什么。

例如:也许你只是正确地注册了多点触控动作,如果在其他地方有一个静止的触摸 - 无意中触摸了握住设备?

答案 1 :(得分:2)

使用CMMotionManager。

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

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

但这应该有用。