当我开始监视像
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),是否有更好的方法来解决此问题?
最佳答案
发现,很明显 didStartMonitoringForRegion 委托(delegate)函数是要求 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)
}
}
:(
关于swift2 - Swift中startMonitoringForRegion之后的RequestStateForRegion,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33287196/