2012-07-23 91 views
1

我已经阅读了关于CMMotion的Apple文档以及为了NSLog加速计数据所需完成的一切,似乎是在我的应用程序中完成的。但是,当我运行我的应用程序并翻转屏幕时,没有从加速度计返回的数据。我没有运行时错误。这里是我的代码:加速度计不工作

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    ad = [[CMMotionManager alloc] init]; 
    //[ad startDeviceMotionUpdates]; 
    [ad startAccelerometerUpdates]; 

    //Returns Null 
    NSLog(@"Accelerometer Data %@", ad.accelerometerData); 

    BOOL accelerometerAvailable = ad.isAccelerometerAvailable?YES:NO; 

    // Returns false, else statement is logged 
    if(accelerometerAvailable) { 
    NSLog(@"I guess it is..."); 
    } else { 
    NSLog(@"I guess it is not..."); 
     } 

    [ad startAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue]  withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) { 
    NSLog(@"Your accelerometer data is: %@", accelerometerData.acceleration); 
}]; 

} 

我试图将此代码添加到我的另一个应用程序,返回上一个时间间隔的数据,以确保我没有得到数据的原因是因为viewDidLoad中只调用一次。我什么都没有。

回答

2

我的错误在这里。这个问题源于我使用iOS模拟器来运行我的应用程序。显然,加速度计不起作用。我认为,因为摇动和旋转事件允许它们用于加速计。但是,它们只是用于屏幕的重新定位,这与加速度计无关。如果苹果在文档中包含这个,这将有所帮助。