didEnterRegion 方法仅针对最近的区域触发
Posted
技术标签:
【中文标题】didEnterRegion 方法仅针对最近的区域触发【英文标题】:didEnterRegion Method only Fires for Most Recent Region 【发布时间】:2014-02-21 07:41:40 【问题描述】:我正在尝试在我的应用程序中使用 ios didEnterRegion 方法。我有一个将用户传递给 profileViewController 的 tableView。在 profileViewController 的 viewDidLoad 方法中,我有一组纬度和经度坐标,我将它们存储为一个区域,然后我开始监视该区域。
此代码有效,但 didEnterRegion 方法仅在加载的最后一个配置文件时触发。例如,如果我查看配置文件 A 并开始监视配置文件 A 的区域,然后查看配置文件 B,只有当我进入配置文件 B 的区域时才会触发 didEnterRegion。
有谁知道可能出了什么问题?谢谢!
下面是 profileViewController 的 viewDidLoad 方法中的代码:
NSString *latOne = placeLatitude;
NSString *lngOne = placeLongitude;
NSString *radiusOne = @"100";
CLLocationDegrees latTwo = [latOne doubleValue];
CLLocationDegrees lngTwo =[lngOne doubleValue];
CLLocationDistance radiusTwo = [radiusOne doubleValue];
CLLocationCoordinate2D coordinates = CLLocationCoordinate2DMake(latTwo, lngTwo);
CLRegion *grRegion = [[CLRegion alloc] initCircularRegionWithCenter:coordinates
radius:radiusTwo identifier:[NSString stringWithFormat:@"grRegion%i", 1]];
[locationManager startMonitoringForRegion:grRegion];
我的 didEnterRegion 也在 profileViewController 中
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
//local notification code is in here
【问题讨论】:
【参考方案1】:设置为位置管理器委托的视图控制器将实现/响应 didEnter/didExit,我建议您使用位置管理器的单例模式(或共享实例)并设置 de 委托正确。带有多个位置管理器的多个视图控制器可能会导致问题。
【讨论】:
以上是关于didEnterRegion 方法仅针对最近的区域触发的主要内容,如果未能解决你的问题,请参考以下文章
didEnterRegion 信标管理器方法返回一个主要和次要为零的区域
iOS 8 中的 didEnterRegion - 区域监控
iBeacon - 可以使用 startRangingBeacons 进行检测,但不能用于 didEnterRegion
iOS Beacon Monitoring - didEnterRegion 仅在受监控区域触发 didExitRegion 后调用