Sto chiamando per la posizione corrente ogni volta che l'utente effettua il login e in diversi altri luoghi. Ogni volta che lo faccio, la vista di avviso che chiede il permesso da parte dell'utente appare per un secondo o giù di lì, e poi scompare. E ovviamente, non capisco la posizione. questo succede ogni volta che chiedo la posizione. Non consente all'utente di fare clic su Annulla o OK. Per favore aiutoAvviso CLLocationManager che viene ignorato da solo
risposta
È probabile che tu non stia mantenendo il LocationManager. Di conseguenza, quando hai chiamato [CLLocationManager startUpdatingLocation]
l'avviso è stato mostrato ma scompare non appena viene rilasciato il locationManager. Mi è successo una volta quando ho digitato assign invece di strong nella proprietà che avevo creato per la mia istanza locationManger.
Perché non ci ho pensato? Grazie. – DCMaxxx
@NikitaP Questo dovrebbe essere contrassegnato come la risposta. –
Lo stesso problema viene affrontato nel mio progetto (swift lang).
provare questo, Dichiarare che variabile CLLocationman come variabile globale e chiamare dove si desidera.
es:
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.desiredAccuracy = kCLLocationAccuracyBest
if(iOS8)
{
locManager.requestAlwaysAuthorization()// only support ios 8.0
}
}
tenta di spostare metodo delegato setter dopo startUpdatingLocation. Per me funziona. Esempio:
CLLocationManager *m = [[CLLocationManager alloc] init];
[m startUpdatingLocation];
m.delegate = self;
Opz, il mio povero inglese.
Non posso commentare il suo post, quindi sto rispondendo qui.
Gianluca Tranchedone ha ragione. Nel mio caso, stavo mantenendo CLLocationManager. MA: Spara il primo callback, subito dopo che AlertView è stato mostrato, per dire al delegato che lo stato è indeterminato. Ho fatto l'errore di rilasciare l'istanza quando è stata ricevuta qualsiasi richiamata.
Questo è ciò che il metodo ora sembra e funziona:
-(void)locationManager:(CLLocationManager*)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
switch (status) {
case kCLAuthorizationStatusNotDetermined:
break;
default:
_locationManagerForAuthorizationRequest.delegate = nil;
self.locationManagerForAuthorizationRequest = nil;
}
}
preso risolto da solo. :) –
Mi sono imbattuto in questo problema e non riesco a capire perché! – tagyro