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

Posted

技术标签:

【中文标题】显示位置权限对话框并立即消失【英文标题】:Location permission dialog is shown and immediately disappears 【发布时间】:2017-10-19 17:31:19 【问题描述】:

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)")
        

我不知道这是否相关,但我正在使用 SWRavealViewController。 Xcode9,为iOS 8.0编译,模拟器和真机都有

【问题讨论】:

这段代码在哪里执行? 我在不同的地方试过 【参考方案1】:

您的 locationManager 变量不会超出其定义范围(代码的 sn-p 所在的函数),因此在用户可以响应对话框之前将其释放。

如果您将let locationManager = CLLocationManager() 移至类变量,它应该会保留。

【讨论】:

【参考方案2】:

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

class ViewController: UIViewController 

  let locationManager = CLLocationManager()

  override func viewDidLoad() 
    super.viewDidLoad()
  

【讨论】:

以上是关于显示位置权限对话框并立即消失的主要内容,如果未能解决你的问题,请参考以下文章

Facebook 分享对话框立即消失

Facebook分享对话框立即消失

Android运行时权限对话框未显示

这个应用程序如何立即请求后台位置权限?

拆分按钮控件在 MFC 对话框中消失

位置的请求权限对话框不显示