Во-первых, убедитесь, что ваш интерфейс использует протокол UIAccelerobeterDelegate.
@interface MainViewController : UIViewController <UIAccelerometerDelegate>
Теперь в вашей реализации:
//get the accelerometer
self.accelerometer = [UIAccelerometer sharedAccelerometer];
self.accelerometer.updateInterval = .1;
self.accelerometer.delegate = self;
Реализация метода делегата:
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
float x = acceleration.x;
float y = acceleration.y;
float b = acceleration.z;
// here you can write simple change threshold logic
// so you can call trigger your method if you detect the movement you're after
}
Значения, которые акселерометр возвращает для x, y и z, всегда будут с плавающей точкой от -1,0 до 1,0. Вы должны вызвать NSLog и вывести на консоль значения x, y и z, чтобы вы могли понять, что они значат. Тогда вы можете разработать простой способ обнаружения движения.