Han*_*ber 2 cllocationmanager swift2
当我开始监视像这样的地区时
locationManager.startMonitoringForRegion(tGeoFence[wert][wert2])
Run Code Online (Sandbox Code Playgroud)
并尝试确定它是否已经在此之后输入:
for region in locationManager.monitoredRegions {
if let cireg = region as? CLCircularRegion {
if cireg.identifier == tGeoFence[wert][wert2].identifier {
locationManager.requestStateForRegion(cireg)
}
}
}
Run Code Online (Sandbox Code Playgroud)
不起作用,导致在执行代码的第二部分时未完成区域的注册.延迟该部分的执行似乎很难看(确定并不总是被调用),有没有更好的方法来解决这个问题?
发现,显然didStartMonitoringForRegion委托函数是请求requestStateForRegion的正确位置:
func locationManager(manager: CLLocationManager, didStartMonitoringForRegion region: CLRegion) {
locationManager.requestStateForRegion(region)
}
Run Code Online (Sandbox Code Playgroud)
编辑:可怕的是,我仍然需要一个短暂的延迟或有时不会调用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)
}
}
Run Code Online (Sandbox Code Playgroud)
:(
| 归档时间: |
|
| 查看次数: |
1084 次 |
| 最近记录: |