CLLocationManagerDelegate方法未被调用

时间:2016-04-01 03:39:04

标签: ios swift cllocationmanager info.plist mkuserlocation

我在Swift中编码,我想在我的应用中使用用户的位置。我已将NSLocationWhenInUseUsageDescriptionNSLocationAlwaysUsageDescription添加到Info.plist并已正确配置它们。我还添加了CoreLocation.framework并将其导入ViewController。我也在我的班级定义中使用CLLocationManagerDelegate。我已经实现了方法didChangeAuthorizationStatus,这在用户选择允许将其位置提供给应用程序时起作用。当发生这种情况时,我已将文本打印到控制台。但是,当我在打印到控制台后立即从此方法调用方法didUpdateLocations时,该方法不会运行,并且没有任何新内容打印到控制台。我确保在didUpdateLocations方法中包含一个打印命令,以确保这一点。这是其中一种方法的代码:

func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
    if status == .AuthorizedWhenInUse {
        print("permission granted")
        locationManager.startUpdatingLocation()
    } else {
        print(status)
    }
}

正如您所看到的,在方法中,locationManager.startUpdatingLocation()被调用,它应该开始这样做。以下是此方法的代码:

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    print(locations)
}

但是,当我在我的应用程序中按下Allow时,除了“允许的权限”之外,它不会向控制台打印任何内容,这是在第一种方法中调用的。我该如何解决?非常感谢任何帮助!

编辑:

嗯,实际上我只是通过模拟模拟器手机中的移动来解决问题。你只需要点击Debug,将鼠标悬停在Location上,然后选择一种移动形式!

0 个答案:

没有答案