【问题标题】:RequestStateForRegion after startMonitoringForRegion in Swift在 Swift 中 startMonitoringForRegion 之后的 RequestStateForRegion
【发布时间】:2015-10-22 17:38:41
【问题描述】:
当我开始监视像
这样的区域时
locationManager.startMonitoringForRegion(tGeoFence[wert][wert2])
然后尝试确定它是否已经像这样输入:
for region in locationManager.monitoredRegions {
if let cireg = region as? CLCircularRegion {
if cireg.identifier == tGeoFence[wert][wert2].identifier {
locationManager.requestStateForRegion(cireg)
}
}
}
不起作用,导致执行第二部分代码时没有完成区域注册。延迟执行该部分似乎很难看(diddeterminestate not always called),有没有更好的方法来解决这个问题?
【问题讨论】:
标签:
swift2
cllocationmanager
【解决方案1】:
发现,显然 didStartMonitoringForRegion 委托函数是请求 requestStateForRegion 的正确位置:
func locationManager(manager: CLLocationManager, didStartMonitoringForRegion region: CLRegion) {
locationManager.requestStateForRegion(region)
}
编辑: 糟糕的是,我仍然需要短暂的延迟,或者有时没有调用 requestStateForRegion:
func locationManager(manager: CLLocationManager, didStartMonitoringForRegion region: CLRegion) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(0.1 * Double(NSEC_PER_SEC))), dispatch_get_main_queue()) {
self.locationManager.requestStateForRegion(region)
}
}
: (