Ich arbeite derzeit mit dem Mapkit und stecke fest.
Ich habe eine benutzerdefinierte Anmerkungsansicht, die ich verwende, und ich möchte die Bildeigenschaft verwenden, um den Punkt auf der Karte mit meinem eigenen Symbol anzuzeigen. Ich habe das gut funktioniert. Ich möchte aber auch die Standard-Callout-Ansicht überschreiben (die Blase, die mit dem Titel / Untertitel angezeigt wird, wenn das Anmerkungssymbol berührt wird). Ich möchte in der Lage sein, das Callout selbst zu steuern: Das Mapkit bietet nur Zugriff auf die linken und rechten zusätzlichen Callout-Ansichten, aber keine Möglichkeit, eine benutzerdefinierte Ansicht für die Callout-Blase bereitzustellen oder ihr eine Größe von Null oder etwas anderes zuzuweisen.
Meine Idee war es, selectAnnotation / deselectAnnotation in my zu überschreiben MKMapViewDelegate
und dann meine eigene benutzerdefinierte Ansicht zu zeichnen, indem ich meine benutzerdefinierte Anmerkungsansicht aufrufe. Dies funktioniert, aber nur dann , wenn canShowCallout
festgelegt ist YES
in meiner benutzerdefinierten Anmerkungsansicht Klasse. Diese Methoden werden NICHT aufgerufen, wenn ich diese Einstellung auf gesetzt habe NO
(was ich möchte, damit die Standard-Callout-Blase nicht gezeichnet wird). Ich kann also nicht wissen, ob der Benutzer meinen Punkt auf der Karte berührt (ausgewählt) oder einen Punkt berührt hat, der nicht Teil meiner Anmerkungsansichten ist (gelöscht), ohne dass die Standardansicht der Callout-Blase angezeigt wird.
Ich habe versucht, einen anderen Weg einzuschlagen und alle Berührungsereignisse selbst in der Karte zu behandeln, und ich kann das anscheinend nicht zum Laufen bringen. Ich habe andere Beiträge zum Abfangen von Berührungsereignissen in der Kartenansicht gelesen, aber sie sind nicht genau das, was ich möchte. Gibt es eine Möglichkeit, in die Kartenansicht zu graben, um die Beschriftungsblase vor dem Zeichnen zu entfernen? Ich bin ratlos.
Irgendwelche Vorschläge? Vermisse ich etwas Offensichtliches?