我的身份验证请求方法存在一些问题,如下所示:
func requestAuthorisation() {
if CLLocationManager.authorizationStatus() == .NotDetermined {
let locationPermissionRequest = UIAlertController.init(title: "Location services", message: "Some message, hidden for obvious reasons...", preferredStyle: .Alert)
let alwaysOnButton = UIAlertAction.init(title: "Always on (recommended)", style: .Default, handler: { (alert: UIAlertAction!) in
locationPermissionRequest.dismissViewControllerAnimated(true, completion: {
self.locationManager.requestAlwaysAuthorization()
})
})
let backgroundButton = UIAlertAction.init(title: "On when in use", style: .Default, handler: { (alert: UIAlertAction!) in
locationPermissionRequest.dismissViewControllerAnimated(true, completion: {
self.locationManager.requestWhenInUseAuthorization()
})
})
let noButton = UIAlertAction.init(title: "Off", style: .Destructive, handler: { (alert: UIAlertAction!) in
locationPermissionRequest.dismissViewControllerAnimated(true, completion: nil)
})
locationPermissionRequest.addActions(withActions: [alwaysOnButton, backgroundButton, noButton])
locationPermissionRequest.present(true, completion: nil)
}
}
这里的问题是,当我点击“使用时”按钮或“始终”按钮时,会调用它们的操作并解除警报,但从不请求位置验证。我在发出身份验证请求和调用方法的行上放置了一个断点。有趣的是,如果我将对 auth 方法的调用移出它们各自的完成块,那么它工作正常,但出于我的目的,我需要在我的自定义警报被解除之前不要调用它们。
有谁知道为什么我会看到这种行为/知道修复?
编辑:
我只是尝试在主线程上调用调度,因为我偷偷怀疑这是一个线程问题,但唉,事实并非如此。