【问题标题】:Region monitoring in iOS: didEnterRegion fires but didExitRegion does not in simuatoriOS 中的区域监控:didEnterRegion 触发但 dixit 区域不在模拟器中
【发布时间】:2012-05-11 02:44:00
【问题描述】:

我正在使用 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 5.1 的 iPhone 4S 上运行该应用程序的相同测试。所有测试都有相同的结果。

我已确保按照其他线程中的建议启用了 WiFi,并徒劳地查看了有关相关主题的其他问题。关于为什么其中一个区域转换事件会触发,而另一个不会触发的任何建议?

【问题讨论】:

    标签: ios cllocationmanager


    【解决方案1】:

    我在 5.1 中遇到了同样的问题。我向苹果公司提交了一个雷达作为一个错误。它会触发第一个事件,进或出,但之后没有其他事件。

    据我所知,此问题已在 iOS 6 测试版中得到解决。所以等 iOS 6 上线后才能解决。

    雷达:11715223

    【讨论】:

    • iOS 6.1.1存在模拟器档位区域监控问题。
    • 我同意,问题仍在发生。这个答案有点过时了。 FWIW,Apple仍未更新雷达,因此问题仍然存在。随意欺骗雷达。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-20
    • 2018-05-21
    • 2014-05-23
    • 2011-07-17
    • 1970-01-01
    相关资源
    最近更新 更多