Leila, parte de nuestro equipo, nos hizo el favor de redactar este tutorial porque domina perfectamente este tema.
Solución:
Debe usar el marco Core Motion (introducido en iOS 4.0) como sustituto. Crear una instancia de CMMotionManager
y dile a startAccelerometerUpdatesToQueue:withHandler:
pasándole un NSOperationQueue
y un bloque que se ejecutará en la cola especificada cada vez que haya nuevos datos de acelerómetro disponibles.
Parece que UIAccelerometer y UIAccelerometerDelegate fueron reemplazados por el marco CoreMotion.
Puedes encontrar la respuesta aquí:
¿Por qué acelerómetro: didAccelerate: está en desuso en IOS5?
Espero que ayude.
Aquí hay un código de muestra útil que encontré para CoreMotion en este enlace.
@interface ViewController ()
@property (nonatomic, strong) CMMotionManager *motionManager;
@property (nonatomic, strong) IBOutlet UILabel *xAxis;
@property (nonatomic, strong) IBOutlet UILabel *yAxis;
@property (nonatomic, strong) IBOutlet UILabel *zAxis;
@end
@implementation ViewController
- (void)viewDidLoad
[super viewDidLoad];
self.motionManager = [[CMMotionManager alloc] init];
self.motionManager.accelerometerUpdateInterval = 1;
if ([self.motionManager isAccelerometerAvailable])
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[self.motionManager startAccelerometerUpdatesToQueue:queue withHandler:^(CMAccelerometerData *accelerometerData, NSError *error)
dispatch_async(dispatch_get_main_queue(), ^
self.xAxis.text = [NSString stringWithFormat:@"%.2f",accelerometerData.acceleration.x];
self.yAxis.text = [NSString stringWithFormat:@"%.2f",accelerometerData.acceleration.y];
self.zAxis.text = [NSString stringWithFormat:@"%.2f",accelerometerData.acceleration.z];
);
];
else
NSLog(@"not active");
@end
Eres capaz de confirmar nuestra función fijando un comentario y dejando una puntuación te damos la bienvenida.