0

我正在使用以下代码使用 coreMotion FrameWork 在我的应用程序中获取抖动事件。此代码在 iPod 5 中运行良好,但在任何其他设备(即 iPhone 4、3gs、iPod 4)上都无法运行。我在 iOS 6 和 5 中尝试过。

NSOperationQueue *op = [[NSOperationQueue alloc] init];
        CMMotionManager *motionManager = [(AppDelegate *)[[UIApplication sharedApplication] delegate] sharedMotionManager];

            motionManager.deviceMotionUpdateInterval = 1;
            [motionManager startAccelerometerUpdatesToQueue:op withHandler:^(CMAccelerometerData *accelerometerData, NSError *error)
             {
                 if(error)
                 {
                     NSLog(@"%@", [error localizedDescription]);
                 }
                 else
                 {
                     [self calculateWithThreshold:accelerometerData];
                 }
             }];

请指教可能是什么问题。

4

1 回答 1

0

试试这个:

@implementation ShakingView

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
if ( event.subtype == UIEventSubtypeMotionShake )
{
    // Put in code here to handle shake
}

if ( [super respondsToSelector:@selector(motionEnded:withEvent:)] )
    [super motionEnded:motion withEvent:event];
}

- (BOOL)canBecomeFirstResponder
{ return YES; }

@end

我从这里得到的。

它适用于所有版本为 3.0++ 的 iOS

于 2013-03-12T07:24:30.920 回答