iOS 8 MKAnnotationView rightCalloutAccessoryView falsch
Ich bin noch Recht neu in der iOS-Sachen im Allgemeinen und ein problem festgestellt, beim testen unserer App für iOS-8-Kompatibilität.
In iOS 7 funktionierte alles gut, aber auf iOS 8 die rightCalloutAccessoryView ist falsch, unter bestimmten Umständen.
Ersten Screenshot: Korrekt ausgerichtet
Zweiten Screenshot: Falsche Ausrichtung
Wie Sie sehen können, das problem findet statt, wenn das Infofenster hat einen langen Titel. Aber dies war nicht der Fall auf iOS 7 und ich konnte nichts finden, in denen dieses hat sich geändert?
Habe ich versucht zu verstehen, warum und einen Weg finden, um dieses Problem zu beheben, aber konnte nicht finden, dass irgendetwas noch nicht.
Ist dies lösbar auf unseren eigenen, oder müssen wir die Datei ein Problem für Apple?
Jede Hilfe/Ideen wäre sehr geschätzt, als ich bin irgendwie overchallenged mit diesem problem.
Code hinzufügt MKAnnotationViews
- (MKAnnotationView *)viewForStation:(id<MKAnnotation>)annotation {
static NSString *stationIdentifier = @"stao";
MKAnnotationView *annotationView = [self.mapView dequeueReusableAnnotationViewWithIdentifier:stationIdentifier];
if (annotationView == nil) {
annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:stationIdentifier];
annotationView.image = [UIImage bundleImageNamed:PIN_IMAGE];
annotationView.canShowCallout = YES;
annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
}
return annotationView;
}
Als Sie vielleicht interessieren, dass ich (gerade jetzt) auch noch diese Frage zu den iOS 8 Beta-Abschnitt apple.developer.com: https://devforums.apple.com/thread/242282?tstart=0
Wenn ich eine Antwort bekommen, entweder hier oder auf apple.developer.com ich werde reflektieren es, so dass wir finden es auf beiden Seiten
- Hat niemand eine Idee noch?
- Ich habe das gleiche problem 🙁
- Mich auch, ich bin nicht in der Lage, dies zu beheben 🙁
- Gleiche problem hier...
- Sie Schloss meine Frage als Duplikat ohne Kommentar, und Sie kann auch nicht anzeigen, das anstehende Problem. FU Apple!
- Gibt es irgendwelche updates zu diesem Thema?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich löste dies durch Einstellung der autoresizingmask zum fixieren der vertikalen bug und Rahmen.Größe.die Breite der horizontalen Fehler
Hässlich wie die Teufel, aber ich habe es geschafft, zu finden, einen workaround zu diesem Problem.
Legen Sie die Zubehör-view-Höhe auf einen Wert gleich der erläuterungsansicht Höhe. Ich verwendete hard-codierten Werte:
(Sie haben wahrscheinlich bemerkt, die Höhe der Standard-annotation-erläuterungsansicht, die größer ist in iOS 8 als in iOS 7).
In Ihrem code, das wäre:
Auch, von dem, was ich bisher gesehen habe, wenn Sie angeben, sowohl Links als und richtige Zubehör sichten, Sie müsste um beide Ihrer Höhe auf den gleichen Wert zu erhalten, korrekt ausgerichtet. Hoffentlich dieses Problem behoben werden, in späteren iOS-Versionen zu vermeiden, schriftlich diese Art von code...
Hi ich hatte genau das gleiche problem hier ist, was ich Tat, um es zu lösen:
Es scheint ein Problem zu sein mit der Legende anzuzeigen haben Sie Probleme mit der Anzeige der MKAnnotation Titel text wenn er zu lang ist. Sogar von Ihrem screenshot können Sie sehen, das Problem geschieht nur, wenn der Titel abgeschnitten wurde und das Auslassungszeichen Hinzugefügt. Also die standard-MKAnnotation ist nicht auslegen die Ansichten richtig und das ist ein bug in iOS8.
In der Zwischenzeit könnten Sie Ihre eigenen erstellen benutzerdefiniertes callout, indem Sie die folgenden Schritte hier.
Ich dachte, das war zu viel Arbeit für das, was ich brauchte, also habe ich einfach getrimmt das title-string und Hinzugefügt, die Schaltfläche mit den Auslassungszeichen, um zu verhindern, dass es versucht zu tun, selbst. (Nicht ideal, sondern ist eine schnelle Lösung, und der text würde abgeschnitten werden, eh)
Einer Neugier, die ich bemerkte, war, dass mein Erster callout angezeigt werden würde, richtig auszurichten, die Zubehör-Ansichten, aber die nachfolgenden Auswahlen nicht. Ich fügte hinzu, einen Anruf zu
[view setNeedsLayout]
vor der Rückgabe der aus der Warteschlange entfernten Beschriftungsansicht, und alles begann wieder richtig ausrichten.Ohne verbringen mehr Zeit auf dieser, meine beste Vermutung ist, dass ein re-layout nicht ausgelöst wird, für eine Sicht, die wurde aus der Warteschlange entfernt werden, weil die Ansicht bietet nicht geändert hat.
Ich sehr empfehlen, Absenden ein radar für dieses Problem, obwohl. Es sollte nicht notwendig sein, um Problemumgehungen implementieren, die für einen standard-Anwendungsfall.
EDIT:
Während diese immer noch scheint besser zu sein für viele Fälle, bin ich immer noch die Begegnung mit dieser Ausgabe mit Anmerkungen, deren Titel ist lang genug abgeschnitten zu sein.
Für jetzt, ich Verstecke mich rightCalloutAccessoryView mit
und klicken Sie auf Annotation Ansicht noch arbeiten, nur keinen button auf der rechten Seite.
Getestet unter iOS7 und iOS8, nicht sicher, über iOS6.
Ich habe mir die Arbeit durch die Einstellung meiner Karte Ansicht Stellvertretung vor, um das hinzufügen der annotation und nicht haben, etwas zu ändern in der del.
Gehen aus der folgenden:
Zu:
Fixiert es für mich. Ich bemerkte, dass die delegate-Methode wird aufgerufen, wenn die Anmerkung wird Hinzugefügt, so dass, wenn die Stellvertretung nicht, bevor Sie hinzufügen der annotation wird nicht aufgerufen.
In Swift 3: