如果您想让您的 ViewController 充当加速度计和 GPS 的委托,请在其头文件中声明它遵守两种委托协议:
@interface ViewController : UIViewController <CLLocationManagerDelegate, UIAccelerometerDelegate> {
CLLocationManager *myLocationManager; // an instance variable
}
// ... your definitions
@end
然后在你的 ViewController 的某个地方
[UIAccelerometer sharedAccelerometer].delegate = self;
myLocationManager = [[CLLocationManager alloc] init];
myLocationManager.delegate = self;
然后在您的 ViewController 中的其他地方,放置两个协议的委托方法
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
// ... your code
}
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
// ... your code
}
这应该可以,虽然可能有错别字,但我没有编译这个。另外,根据我的经验,位置管理器代码往往会变得很大。最好将它放在一个自己的类中,由 ViewController 实例化。
谁能解释为什么不推荐使用 UIAccelerometerDelegate 协议中的唯一方法?