2012-07-27 16 views
10

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

+1

preso risolto da solo. :) –

+0

Mi sono imbattuto in questo problema e non riesco a capire perché! – tagyro

risposta

14

È 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.

+0

Perché non ci ho pensato? Grazie. – DCMaxxx

+0

@NikitaP Questo dovrebbe essere contrassegnato come la risposta. –

0

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 
      } 

    } 
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.

0

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; 
} 

}

Problemi correlati