Ich habe ein statisches Kartenbild mit einer Reihe von Kreisen und Quadraten darauf, die Städte darstellen. Ich habe das Bild in eine Bildansicht geladen, die unter einer Bildlaufleiste untergeordnet ist, sodass ich Benutzerberührungen erfassen und über die Karte zoomen/blättern kann. Meine Herausforderung besteht darin, dass ich ein Label aufklappen möchte, wenn ein Nutzer einen dieser Kreise/Quadrate für eine Stadt berührt, um ihm mitzuteilen, um welche Stadt es sich handelt, und möglicherweise eine Detailansicht für die Stadt zu laden. Ich dachte, ich könnte alle relativen CGPoints für die Städte basierend auf der imageView Karte in ein Wörterbuch laden, so dass ich sie während eines "touchBegan" -Ereignisses referenzieren kann, aber ich komme schnell über meinen Kopf hinweg und gehe möglicherweise darüber Falsche Weg.iPhone erkennt Berührungen auf einem Kartenbild
Bis jetzt funktioniert alles und ich kann die CGPoint X- und Y-Koordinaten von Berührungen erfassen. Das größte Problem, das ich habe, ist das Bestimmen der Nähe der Benutzerberührungen zu einem diskreten Punkt, den ich in dem Wörterbuch haben kann. Mit anderen Worten, wenn das Wörterbuch "Boston = NSPoint: {235, 118}" hat; Wie kann ich feststellen, wenn ein Benutzer in der Nähe dieses Punktes ist, ohne dass er die Berührung wiederholt, bis es genau ist? Gibt es eine einfache Möglichkeit festzustellen, ob eine Berührung eines Benutzers mit einem bereits vorhandenen Punkt "nahe" ist? Gehe ich das richtig?
Alle Ratschläge oder Ohrfeigen im Hinterkopf sind willkommen.
Dank, Mike
Ich dachte darüber nach, aber mit 50+ Stadtpunkten wäre es verrückt, so viele Objekte zu deklarieren/verwalten. Danke für die Antwort - Mike. –
Auch wenn es verrückt erscheinen mag, könnten Sie einfach durch Ihr Wörterbuch iterieren, den Punkt der Stadt herausziehen, eine neue Schaltfläche mit 15 x 15 Pixel erstellen und dann das Zentrum mit dem Punkt der Stadt festlegen. Die andere Sache, die Sie tun müssen, ist die Verbindung zu einer Methode (addTarget: action: forControlEvent :) und stellen Sie sicher, dass Sie eine Möglichkeit haben zu erkennen, welcher Button welcher Stadt entspricht. Eine Möglichkeit besteht darin, die Tag-Eigenschaft der Schaltfläche als Index der Stadt in einem Array festzulegen. –
Danke Dave, das ist im Grunde, was ich getan habe. Ich iteriere durch ein Wörterbuch von Punkten, die eine zusammengesetzte if-Anweisung vergleichen (+/- 10), und wenn ich einen Punkt innerhalb der Toleranz finde, ziehe ich den Namen der Stadt aus dem Wörterbuch und erzeuge/zeige eine Ansicht mit dem Städtenamen und an ein paar Tasten für Benutzeraktionen. - Nochmals vielen Dank, Mike –