在底部(在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