在底部(在AppDelegate.m中),您可以看到我的CLLocationManager
委托方法,它们都不会被调用。我正在使用GPX文件,但即使这些区域没有输入或退出,也应该调用代理方法didStartMonitoringForRegion
。为什么我的CLLocationManager没有响应startMonitoringForRegion?
SomeOtherClass.m
AppDelegate appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate.locationManager startMonitoringForRegion:regionToMonitor desiredAccuracy:kCLLocationAccuracyNearestTenMeters];
AppDelegate.h
@interface AppDelegate : UIResponder <UIApplicationDelegate,CLLocationManagerDelegate>
@property (nonatomic, retain) CLLocationManager *locationManager;
AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if (locationManager==nil) {
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
}
return YES;
}
-(void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region {
NSLog(@"Did enter region");
}
-(void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region {
NSLog(@"Did exit region");
}
-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
NSLog(@"Fail");
NSLog(@"%@", [error description]);
}
-(void)locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region {
NSLog(@"Did start monitoring for region: %@", region.identifier);
}
您是否已检查过'+(BOOL)regionMonitoringAvailable'和'+(BOOL) regionMonitoringEnabled'在您的位置管理器上? – 2012-03-30 13:33:54
@DavidRönnqvist我刚刚做了,两者都是真实的。 – Pieter 2012-03-30 13:58:35
也发生在我身上。奇怪的部分是该区域被正确监控,并显示在'monitoredRegions'中......我有一个偷偷的怀疑,只有当一个不同的'CLLocationManager'添加一个区域时才会调用这个区域(因为它们是在你的应用程序中共享的)... – 2012-06-27 22:01:42