我使用以下代码加速度计,适用于ipod 3g ,但不适用于 iphone4 (不显示警报)
·H
#define kAccelerationThreshold 2.2
#define kUpdateInterval (1.0f/10.0f)
的.m
- (void)viewDidLoad
{
[super viewDidLoad];
UIAccelerometer *accel=[UIAccelerometer sharedAccelerometer];
accel.delegate=self;
accel.updateInterval=kUpdateInterval;
}
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
if (fabsf(acceleration.x) > kAccelerationThreshold || fabsf(acceleration.y) > kAccelerationThreshold || fabsf(acceleration.z) > kAccelerationThreshold)
{
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Shake" message:@"" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
}
}
答案 0 :(得分:1)
将您的代码复制到一个新项目中 - 为了使其工作,我必须将kAccelerationThreshold
值降低到1.5左右 - 这仍然需要相当猛烈的震动。
仅在iPhone 4上测试过。
答案 1 :(得分:0)
查看UIAccelerometer Class Reference。
请务必在标题中实施UIAccelerometerDelegate
协议。
答案 2 :(得分:0)
accel=updateInterval=kUpdateInterval;
看起来应该是
accel.updateInterval=kUpdateInterval;