【发布时间】:2014-01-27 08:12:47
【问题描述】:
我的代码适用于 iOS 6 。但问题在于 iOS7 只有 didStartMonitoringForRegion 被调用,didEnterRegion 和 didEExitRegion 没有被调用 ....
- (void)viewDidLoad
{
[super viewDidLoad];
m_pLocatiomManager = [[CLLocationManager alloc] init];
m_pLocatiomManager.desiredAccuracy = kCLLocationAccuracyBest;
m_pLocatiomManager.delegate = self;
[m_pLocatiomManager startMonitoringSignificantLocationChanges];
[m_pLocatiomManager startUpdatingLocation];
}
添加区域的方法
if ([UIDevice currentDevice].systemVersion.floatValue >= 7.0)
{
float rad = 200;
CLLocationCoordinate2D startLocation;
startLocation.latitude = 12.9667 ;
startLocation.longitude =77.5667 ;
CLCircularRegion * reg1 = [[CLCircularRegion alloc] initCircularRegionWithCenter:startLocation radius:rad identifier:@"location"];
[m_pLocatiomManager startMonitoringForRegion:reg1];
}
else
{
float rad = 200;
CLLocationCoordinate2D startLocation;
startLocation.latitude = 12.9667;
startLocation.longitude = 77.5667;
[m_pLocatiomManager startMonitoringForRegion:[[CLRegion alloc] initCircularRegionWithCenter:startLocation radius:rad identifier:@"location"]];
}
核心定位代表----
-(void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
{
NSLog(@"region entered %@",region.description);
}
-(void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region
{
NSLog(@"region exit %@",region.description);
}
-(void)locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region
{
NSLog(@"region monitoring stared");
}
谢谢。
【问题讨论】:
-
你是在设备上测试这个吗?
-
模拟器使用gpx文件
-
我会尝试在设备上对其进行测试,因为区域监控使用手机信号塔和 wifi 来获取位置修复。在模拟器上测试时我也遇到了问题。另外,如果您还没有这样做,我建议您实施
locationManager:monitoringDidFailForRegion:withError以确保一切正常。 -
@GadMarkovits 是对的,当您尝试进行区域监控时,模拟器的行为是不可预测的。我很惊讶它可以在 iOS6 上运行。二是不要用那个系统查版本,用苹果提供的developer.apple.com/library/ios/documentation/userexperience/…看底部
标签: ios ios7 core-location region region-monitoring