我正在使用加速度计在我的应用中移动/更改屏幕上的内容。 我还需要在视图控制器中检测一些其他动画的UIEventSubtypeMotionShake。
由于我的应用程序是基于简单视图的应用程序,因此只有一个视图控制器充当UIAccelerometerDelegate和FirstResponder(用于检测抖动事件)。 在检测到第一个Shake手势后,我不需要通过[accelerometer didAccelerate]方法输入加速度计,所以我将加速度计委托设置为零。
-(void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
if (motion == UIEventSubtypeMotionShake)
{
NSLog(@"shake");
[[UIAccelerometer sharedAccelerometer] setDelegate:nil];
//my shake handling code
}
}
问题在于没有正确检测到第一次摇动。我必须摇动2次或更多次以触发UIEventSubtypeMotionShake事件,而在加速度计委托为零之后的后续抖动被正确检测。
必须发生这种情况,因为UIEventSubtypeMotionShake又取决于我的代码覆盖的加速度计didAccelerate事件。但我需要同时使用这两个事件。
另一种选择是处理/检测[accelerometer didAccelerate]中的抖动,就像它必须在3.0(as mentioned in some answers in this question)之前完成一样,但为什么我必须编写一些现成的东西?
是否有同时使用加速度计和UIEventSubtypeMotionShake的应用程序或代码示例?