我用定时定时器解决了这个问题。每0.5秒调用下面的方法并工作。
- (void)viewDidLoad {
[super viewDidLoad];
theQueue = [[NSOperationQueue alloc] init];
returnedData = [[CMAccelerometerData alloc] init];
motionManager = [[CMMotionManager alloc] init];
[NSTimer scheduledTimerWithTimeInterval:0.5f
target:self selector:@selector(checkPhonePosition:) userInfo:nil repeats:YES];
}
-(void)checkPhonePosition:(NSTimer *)timer {
[motionManager startAccelerometerUpdatesToQueue:theQueue withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
returnedData = motionManager.accelerometerData;
z = returnedData.acceleration.z;
NSLog(@"Z: %f", z);
}];
if(z > -1.0 && z < -0.8 ){
btnOpen.hidden = NO;
}
else{
btnOpen.hidden = YES;
}
}