Как я могу отключить любые объекты CLRegion, зарегистрированные с помощью -startMonitoringForRegion?

Я использую 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]; , но он возвращает только активный забор и только тогда, когда у меня загружено мое подробное представление. Я не могу назвать это каким-либо другим местом в моей программе и заставить его вернуть какие-либо мои заборы, хотя я знаю, что они должны быть активными. Если у кого-то есть совет, куда идти дальше, я все слышу.

24
задан Bill Burgess 9 January 2013 в 14:10
поделиться