Shake Gesture不适用于iPhone 4,不知道为什么......?

时间:2010-11-12 06:53:12

标签: iphone

我开发了一款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 ...

2 个答案:

答案 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-