Locationmanager startmonitoringforregion 不调用委托方法
Locationmanager startmonitoringforregion not calling delegate methods
我正在尝试制作基于区域的提醒。当我需要添加提醒时,我会弹出一个 viewcontroller。在那个 vc 我 select 我需要提醒的区域,然后使用 startMonitoringForRegion 方法。我将 locationManager 委托设置为 AppDelegate,以便 AppDelegate 可以响应进入或退出区域。
问题是当我关闭 viewcontroller 时,委托方法不会被调用。我做错了什么?
这是代码:
添加提醒VC
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[self.locationManager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];
CLCircularRegion *region = [[CLCircularRegion alloc] initWithCenter:self.lastCenter radius:self.radius identifier:@"id"];
[self.locationManager startMonitoringForRegion:region];
AppDelegate
- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region {
NSLog(@"EXIT REGION");
}
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region {
NSLog(@"ENTER REGION");
}
请注意,当 AddReminderVC 仍然可见时,会调用这些方法。只有当它被解除时,委托方法才起作用。
您必须在 AppDelegate 中实例化 locationManager 或编写另一个 Singleton class 来保存 locationManager。如果您将它设置为 viewController ,当不再有对它的引用时,arc 将删除该对象。
我正在尝试制作基于区域的提醒。当我需要添加提醒时,我会弹出一个 viewcontroller。在那个 vc 我 select 我需要提醒的区域,然后使用 startMonitoringForRegion 方法。我将 locationManager 委托设置为 AppDelegate,以便 AppDelegate 可以响应进入或退出区域。
问题是当我关闭 viewcontroller 时,委托方法不会被调用。我做错了什么?
这是代码:
添加提醒VC
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[self.locationManager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];
CLCircularRegion *region = [[CLCircularRegion alloc] initWithCenter:self.lastCenter radius:self.radius identifier:@"id"];
[self.locationManager startMonitoringForRegion:region];
AppDelegate
- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region {
NSLog(@"EXIT REGION");
}
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region {
NSLog(@"ENTER REGION");
}
请注意,当 AddReminderVC 仍然可见时,会调用这些方法。只有当它被解除时,委托方法才起作用。
您必须在 AppDelegate 中实例化 locationManager 或编写另一个 Singleton class 来保存 locationManager。如果您将它设置为 viewController ,当不再有对它的引用时,arc 将删除该对象。