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 に答える