【问题标题】:CLLocationManager requestAlwaysAuthorization popup shows and hides immediatelyCLLocationManager requestAlwaysAuthorization 弹出窗口立即显示和隐藏
【发布时间】:2016-04-10 17:57:37
【问题描述】:

CLLocationManager requestAlwaysAuthorization 弹出窗口立即显示和隐藏,让用户没有时间按下允许按钮。这是我为位置管理编写的一个类:

import UIKit

class TMLocationManager: NSObject, CLLocationManagerDelegate {
    var locationManager: CLLocationManager?

    override init() {
        super.init()
    }

    static func startLocationManager() {
        let manager = TMLocationManager()
        manager.getPermission()
    }

    private func getPermission () {
        locationManager = CLLocationManager()
        locationManager!.desiredAccuracy = kCLLocationAccuracyBestForNavigation
        locationManager!.delegate = TMLocationManager.init()

        switch CLLocationManager.authorizationStatus() {
        case .Denied, .Restricted:
            return
        case .NotDetermined:
            locationManager!.requestAlwaysAuthorization()
            break
        case .AuthorizedAlways, .AuthorizedWhenInUse:
            locationManager!.startUpdatingLocation()
        default:
            break
        }
    }

}

在我的代码中我只写TMLocationManager.startLocationManager()

【问题讨论】:

  • 你也需要保留manager
  • 在您的 startLocationManager 函数中,您正在创建一个局部变量,该变量将在函数退出时立即超出范围。
  • 是的,这对 @max_ 和高锰酸钾有帮助,谢谢

标签: ios swift cllocationmanager


【解决方案1】:

结合我的评论,您需要确保 manager 变量被保留,因为它将被释放,并且一旦 startLocationManager 方法完成执行,警报就会被解除。

【讨论】:

    猜你喜欢
    • 2012-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-05
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多