我尝试了几种方法,但是找不到替代我的方法
[[UIAccelerometer sharedAccelerometer] setUpdateInterval:(1.0 / kAccelerometerFrequency)];
[[UIAccelerometer sharedAccelerometer] setDelegate:self];
最近,我试图用
motionManager = [[CMMotionManager alloc] init];
motionManager.accelerometerUpdateInterval = (1.0 / kAccelerometerFrequency);
但这似乎不适用于我的虚无
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
CGPoint pt = theCar.center;
CGFloat accel = acceleration.x * kAccelerationSpeed;
float halfCarWidth = theCar.frame.size.width / 2;
if(pt.x - halfCarWidth + accel > 0 && pt.x + halfCarWidth + accel < 320) {
pt.x += accel;
}
[theCar setCenter:pt];
}
那么,由于iOS 5中已弃用了sharedAccelerometer,我该如何替换呢?
最佳答案
运动管理器没有委托消息。使用计时器(NSTimer)并定期轮询运动管理器以获取其值。
self.motman = [CMMotionManager new];
if (!self.motman.accelerometerAvailable) {
// report error or whatever
return;
}
self.motman.accelerometerUpdateInterval = 1.0 / 30.0;
[self.motman startAccelerometerUpdates];
self.timer =
[NSTimer
scheduledTimerWithTimeInterval:self.motman.accelerometerUpdateInterval
target:self selector:@selector(pollAccel:) userInfo:nil repeats:YES];
现在
pollAccel:
被重复调用。拉出加速度计信息:CMAccelerometerData* dat = self.motman.accelerometerData;
CMAcceleration acc = dat.acceleration;
关于ios - 用MotionManager iOS替换sharedAccelerometer,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23251947/