【问题标题】: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)
        }
    }
    

    : (

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-11
      • 2011-08-02
      • 1970-01-01
      • 2012-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-25
      相关资源
      最近更新 更多