La alerta CLLocationManager se descarta por sí misma.

Estoy llamando a la location actual cada vez que el usuario inicia session, y en varios otros lugares. Siempre que lo hago, la vista de alerta que solicita el permiso del usuario aparece por un segundo más o less, y luego desaparece. Y, obviamente, no consigo la location. Esto sucede cada vez que solicito la location. No permite que el usuario click Cancelar o en Aceptar. Por favor ayuda

Es probable que no retuvieras el gestor de location. Como consecuencia, cuando llamó a [CLLocationManager startUpdatingLocation] se mostró la alerta, pero desaparece tan pronto como se libera el [CLLocationManager startUpdatingLocation] location. Me pasó una vez cuando escribí asignar en lugar de fuerte en la propiedad que había creado para mi instancia de locationManger.

El mismo problema que enfrenté en mi proyecto (lenguaje rápido).

intente esto, declare la variable CLLocationmanage como variable global y llame a donde desee.

ex:

  var locManager = CLLocationManager() override func viewDidLoad() { super.viewDidLoad() let iOS7 = floor(NSFoundationVersionNumber) <= floor(NSFoundationVersionNumber_iOS_7_1) let iOS8 = floor(NSFoundationVersionNumber) > floor(NSFoundationVersionNumber_iOS_7_1) locManager.delegate = self locManager.desinetworkingAccuracy = kCLLocationAccuracyBest if(iOS8) { locManager.requestAlwaysAuthorization()// only support ios 8.0 } } 

Intente mover el método setter de delegado después de startUpdatingLocation. Esto funciona para mi. Ejemplo:

 CLLocationManager *m = [[CLLocationManager alloc] init]; [m startUpdatingLocation]; m.delegate = self; 

Opz, mi pobre inglés.

No puedo comentar su publicación, así que estoy respondiendo aquí.

Gianluca Tranchedone tiene razón. En mi caso, estaba reteniendo CLLocationManager. PERO: dispara la primera callback, justo después de que se mostró AlertView, para decirle al delegado que el estado es indeterminado. Cometí el error de liberar la instancia cuando se recibió cualquier callback.

Así es como se ve el método y funciona:

 -(void)locationManager:(CLLocationManager*)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status { switch (status) { case kCLAuthorizationStatusNotDetermined: break; default: _locationManagerForAuthorizationRequest.delegate = nil; self.locationManagerForAuthorizationRequest = nil; } 

}