iOS中的区域监控:didEnterRegion触发,但didExitRegion不在模拟器中

时间:2012-05-01 15:27:21

标签: ios cllocationmanager

我正在使用CLLocationManager来监控iOS中的区域。我以正常方式设置了委托:

self.locationManager = [[[CLLocationManager alloc] init] autorelease];
self.locationManager.delegate = self; 

并实现多个委托函数,包括:

- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
{
   NSLog(@"GeoFence: didEnterRegion");    
}

- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region 
{
    NSLog(@"GeoFence: didExitRegion");    
}

然后我开始用以下方式监控一个地区:

CLLocationCoordinate2D coordinates = CLLocationCoordinate2DMake(lat, lng);     
CLRegion *grRegion = [[CLRegion alloc] initCircularRegionWithCenter:coordinates radius:radius identifier:[NSString stringWithFormat:@"grRegion%i", 1]];

CLLocationAccuracy acc = kCLLocationAccuracyNearestTenMeters;
[self.locationManager startMonitoringForRegion:grRegion desiredAccuracy:acc];

具有lat(51.116261),lng(-0.85300)和radius(200)的适当值。在iPhone 5.1模拟器中构建并运行应用程序后,我使用Xcode 4.3中的位置注入工具在远程位置到目标位置之间移动,然后再返回。在此过程中,didEnterRegion事件正确触发,但didExitRegion永远不会触发。我还收到其他委托回调,例如didUpdateToLocation。我改变了模拟运动的模式,使用了模拟器的位置设置工具而不是Xcode,并尝试在iOS 4的iPhone 4S上运行应用程序的相同测试。所有测试都有相同的结果。

我确保WiFi已按照其他主题中的建议启用,并查看相关主题的其他问题是徒劳的。有什么建议可以解释为什么其中一个区域过渡事件会发生,而不是另一个?

1 个答案:

答案 0 :(得分:0)

我在5.1中遇到过同样的问题。我提交了一个关于苹果的雷达作为一个bug。它会在第一个事件中跳出或跳出,但之后没有其他事件。

从我所看到的,此问题已在iOS 6测试版中得到解决。因此,当iOS 6上线时,请寻求解决。

雷达:11715223