【问题标题】:Accelerometer doesn't work on iphone4加速度计在 iphone4 上不起作用
【发布时间】:2011-01-30 05:19:21
【问题描述】:

我将以下代码用于加速度计,它适用于 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];

    }
}

【问题讨论】:

  • 我们需要查看更多您的代码 - 并描述它究竟是如何不起作用的 - 才能回答这个问题

标签: iphone xcode ios4 accelerometer


【解决方案1】:

将您的代码复制到一个新项目中 - 为了让它工作,我不得不将 kAccelerationThreshold 的值降低到 1.5 左右 - 这仍然需要相当剧烈的摇动。

只在 iPhone 4 上测试过。

【讨论】:

    【解决方案2】:
    accel=updateInterval=kUpdateInterval;
    

    应该是这样的

    accel.updateInterval=kUpdateInterval;
    

    【讨论】:

    • 这是我的错误,我在 xcode 中写的正确(它适用于 ipod 意味着我的代码是正确的)
    【解决方案3】:

    查看UIAccelerometer Class Reference

    请务必在您的标头中实现UIAccelerometerDelegate 协议。

    【讨论】:

      猜你喜欢
      • 2017-07-08
      • 1970-01-01
      • 2016-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多