【问题标题】:LocationManager didEnterRegion not called (again)LocationManager didEnterRegion 没有被调用(再次)
【发布时间】:2016-03-16 15:23:13
【问题描述】:

我正在尝试注册区域以在用户输入时得到通知。这是我使用的代码:

public func locationManager(manager:CLLocationManager, didEnterRegion region:CLRegion){
    print("did enter region \(region)")
    let regionPalina=region.identifier;
    if regionPalina==palina{
        regionMonitoringCompletion?()
    }
}

public func locationManager(manager: CLLocationManager, monitoringDidFailForRegion region: CLRegion?, withError error: NSError){
        print(error.localizedDescription)
}

let myLocationManager=CLLocationManager()

func startMonitoringForRegion(completion:(Void->Void)){
    regionMonitoringCompletion=completion;
    myLocationManager.delegate=self
    if !monitoredForRegion{
        myLocationManager.startMonitoringForRegion(self.regionForPalina())
        monitoredForRegion=true
    }
}

public func locationManager(manager: CLLocationManager, didStartMonitoringForRegion region: CLRegion){
    print("region: \(region) registered")
    print(myLocationManager.monitoredRegions)
}

public func locationManager(manager: CLLocationManager, didDetermineState state: CLRegionState, forRegion region: CLRegion){
    print("state transition \(state)")
}

func stopMonitoringForRegion(){
    myLocationManager.delegate=nil
    regionMonitoringCompletion=nil
    if !monitoredForRegion {
        myLocationManager.stopMonitoringForRegion(self.regionForPalina())
        monitoredForRegion=false
    }
}

注册似乎很顺利,因为调用了 didStartMonitoringForRegion 并且它正确打印了受监控的Regions。但是没有调用 didEnterRegion、didDetermineState 甚至没有调用 monitoringDidFailForRegion。

可能是什么业务?

【问题讨论】:

    标签: swift cllocationmanager clregion


    【解决方案1】:

    我最终用用户位置模拟了这些东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-18
      • 2018-05-30
      • 2023-03-25
      相关资源
      最近更新 更多