我开发了一款iPhone应用程序,它使用Shake Gesture旋转拾取器视图的轮子。我使用IOS 3.2作为基础sdk。我有一个用IOS 4.0更新的iPhone 3GS,当我在这款3GS手机中执行我的应用程序时,它与Shake Gesture正常工作。但是当我在iPhone 4中运行时,Shake Gesture没有响应。我没有得到它的原因,如果有人有Solotion请帮助我...下面我提供了一个代码部分,我曾经用来处理Shake Gesture ....
#define kRowMultiplier 20
#define kAccelerationThreshold 2.2
#define kUpdateInterval (1.0f/10.0f)
(void) accelerometer:(UIAccelerometer*)accelerometer didAccelerate: UIAcceleration*)acceleration{
if (fabsf(acceleration.x) > kAccelerationThreshold || fabsf(acceleration.y) > kAccelerationThreshold || fabsf(acceleration.z) > kAccelerationThreshold) {
[progressView startAnimating];
if (! isSpinning)
{
if(!btnRegion.selected && !btnFlavor.selected && !btnPrice.selected)
{
// Need to have it stop blurring a fraction of a second before it stops spinning so that the final appearance is not blurred.
[self stopBlurring];
wheelingTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(shufflePickerView) userInfo:nil repeats:YES];
}
else
{
[self shufflePickerView];
[self performSelector:@selector(stopBlurring) withObject:nil afterDelay:2.7];
}
}
isSpinning = YES;
}
}
代码中的错误...我可以在IOS 4.0上通过模拟器测试它,或者我只需要iPhone 4 ...
答案 0 :(得分:2)
感谢Hugo提供的解决方案,但是在很多天之前我还有另一种方法可以做到这一点我觉得很容易......
我们可以这样做......
-(void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event{
if (event.type == UIEventSubtypeMotionShake)
{
//Put your code here what you want to do on a shake...
}
}
答案 1 :(得分:0)
我有完全相同的问题。 我在iPhone 3G上测试的代码运行良好,在iPhone 4上它不起作用。两者都在iOS 4.2.1上运行
更新:使用此方法,效果很好: http://www.softvelopment.com/index.php/blogs/2010/03/19/3-adding-shake-recongnition-to-cocos2d-iphone-library-