Ich rufe den aktuellen Standort an, wenn sich der Benutzer anmeldet, und an mehreren anderen Orten. Immer wenn ich dies tue, erscheint die Alarmansicht, die vom Benutzer um Erlaubnis gefragt wird, für eine Sekunde oder so, und dann verschwindet sie. Und natürlich bekomme ich den Ort nicht. Dies passiert jedes Mal, wenn ich nach dem Ort frage. Der Benutzer kann nicht auf Abbrechen oder OK klicken. Bitte helfen SieCLLocationManager-Alarm wird von sich selbst zurückgewiesen
Antwort
Es ist wahrscheinlich, dass Sie den LocationManager nicht beibehalten haben. Wenn Sie also [CLLocationManager startUpdatingLocation]
aufgerufen haben, wurde die Warnung angezeigt. Sie verschwindet jedoch, sobald der locationManager freigegeben wird. Es ist mir einmal passiert, als ich assign statt strong in die Eigenschaft tippte, die ich für meine locationManger-Instanz erstellt hatte.
Warum habe ich nicht daran gedacht? Vielen Dank. – DCMaxxx
@NikitaP Dies sollte als Antwort markiert werden. –
Das gleiche Problem ist in meinem Projekt (swift lang) konfrontiert.
versuchen Sie dies, erklären, dass CLLocationmanage Variable als globale Variable und Anruf, wo Sie wollen.
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.desiredAccuracy = kCLLocationAccuracyBest
if(iOS8)
{
locManager.requestAlwaysAuthorization()// only support ios 8.0
}
}
Versuchen zu delegieren Setter-Methode nach startUpdatingLocation zu bewegen. Für mich geht das. Beispiel:
CLLocationManager *m = [[CLLocationManager alloc] init];
[m startUpdatingLocation];
m.delegate = self;
OPZ, mein schlechtes Englisch.
Ich kann seinen Beitrag nicht kommentieren, also antworte ich hier.
Gianluca Tranchedone hat Recht. In meinem Fall behielt ich den CLLocationManager. ABER: Es wird der erste Callback ausgelöst, direkt nachdem AlertView angezeigt wurde, um dem Delegierten mitzuteilen, dass der Status unbestimmt ist. Ich habe den Fehler gemacht, die Instanz freizugeben, wenn irgendein Rückruf empfangen wurde. Diese
ist, was die Methode sieht nun wie und es funktioniert:
-(void)locationManager:(CLLocationManager*)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
switch (status) {
case kCLAuthorizationStatusNotDetermined:
break;
default:
_locationManagerForAuthorizationRequest.delegate = nil;
self.locationManagerForAuthorizationRequest = nil;
}
}
konnte selbst gelöst. :) –
Ich lief auch in dieses Problem und kann nicht verstehen, warum!? – tagyro