2012-05-31 37 views
2

我已經包括在我的項目的CoreMotion框架和我的視圖控制器的頭進口CoreMotion框架:爲什麼CMDeviceMotionHandler從來沒有被CoreMotion調用過?

#import <CoreMotion/CoreMotion.h> 

然後在-viewDidLoad我有我在iPhone 4上運行這個簡單的測試代碼的iOS 4.3:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    CMMotionManager *motionManager = [[CMMotionManager alloc] init]; 
    [motionManager setDeviceMotionUpdateInterval:0.1]; 

    CMDeviceMotionHandler motionHandler = ^(CMDeviceMotion *motion, NSError *error) { 

     NSLog(@"foo"); 

    }; 

    [motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:motionHandler]; 

    NSLog(@"merde!"); 
} 

當我在設備上運行該項目,並四處移動它,我從來沒有得到一個「foo」的日誌。另外,我嘗試在運動處理程序塊中設置斷點,並且它從不停止。但我確實得到了「merde!」日誌,所以這段代碼是絕對執行的。

爲什麼核心議案不會調用我的處理程序?我的iPhone 4功能正常。加速度計和陀螺儀在其他應用程序中完美工作。沒有硬件錯誤。

回答

1

我有非常類似的代碼運行成功,同樣適用於Event Handling Guide for iOS(陀螺儀數據只有一個適當的)可用樣本。但是有一個主要的區別:

所有的實現都擁有自己的引用到operationQueue = [[NSOperationQueue currentQueue] retain];的opereation隊列或自己構建。所以希望這有助於在日誌中獲得更多的'merde';-)

相關問題