显示位置权限对话框并立即消失

时间:2017-10-19 17:31:20

标签: ios swift cllocationmanager

iOS对话框会在半秒后提示并消失:

        let locationManager = CLLocationManager()
        switch CLLocationManager.authorizationStatus() {
        case .authorizedWhenInUse:
            print("In Use \(locationManager.location?.description)")
        case .denied, .restricted:
            print("denied")
        case .notDetermined:
            locationManager.requestWhenInUseAuthorization()
        case .authorizedAlways:
            print("always \(locationManager.location)")
        }

我不知道这是否相关,但我正在使用SWReavealViewController。 Xcode9,为iOS 8.0编译,包括模拟器和真实设备

2 个答案:

答案 0 :(得分:7)

您的locationManager变量不会超出其定义范围(代码片段所在的函数),因此在用户可以响应对话框之前将其解除分配。

如果将let locationManager = CLLocationManager()移动到类变量,它应该保持不变。

答案 1 :(得分:1)

let locationManager = CLLocationManager()插入您的ViewController类的开头。 (在viewDidLoad()函数之外)。希望对您有帮助。

class ViewController: UIViewController {

  let locationManager = CLLocationManager()

  override func viewDidLoad() {
    super.viewDidLoad()
  }
}