Я использую NavigationController для отображения списка гео-ограждений, доступных пользователю. В верхней части находится глобальный переключатель включения/выключения, который я бы хотел использовать, чтобы отключить любые заборы, зарегистрированные в CoreLocation -startMonitoringForRegion.
Мои заборы, похоже, регистрируются нормально и работают по большей части, но независимо от того, сколько раз я отключил ограждения в отдельности, я все еще получаю пурпурный указатель места, указывающий, что система все еще контролирует мое местоположение и/или заборы.
Когда я отключу свои заборы индивидуально, вот как я это делаю.
CLLocationCoordinate2D coord;
coord.latitude = [[settingsData valueForKey:@"latitude"] doubleValue];
coord.longitude = [[settingsData valueForKey:@"longitude"] doubleValue];
CLLocationDistance radius = [[settingsData valueForKey:@"radius"] intValue];
CLRegion *region = [[CLRegion alloc] initCircularRegionWithCenter:coord radius:radius identifier:[settingsData valueForKey:@"name"]];
// remove this fence from system monitoring
[locationManager stopMonitoringForRegion:region];
[region release];
Я просмотрел всю документацию Apple по CoreLocation и использовал эти методы, и я нахожусь в конце моей веревки.
Я пробовал называть [locationManager monitoredRegions];
, но он возвращает только активный забор и только когда у меня загружено мое подробное представление. Я не могу назвать это другим местом в своей программе и заставить его возвращать любые мои заборы, хотя я знаю, что они должны быть активными. Если у кого-нибудь есть советы, куда идти дальше, я все уши.