Viele dieser Lösungen sind eher hakelig bzw. nicht das, was Swift beabsichtigte, daher habe ich mich für eine sauberere Lösung entschieden.
Ich unterstelle einfach MKMapView und überschreibe touchesMoved. Während dieses Snippet nicht enthalten ist, würde ich empfehlen, einen Delegaten oder eine Benachrichtigung zu erstellen, um die gewünschten Informationen über die Bewegung weiterzugeben.
import MapKit
class MapView: MKMapView {
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
super.touchesMoved(touches, with: event)
print("Something moved")
}
}
Sie müssen die Klasse in Ihren Storyboard-Dateien aktualisieren, um auf diese Unterklasse zu verweisen, und alle Maps, die Sie auf andere Weise erstellen, ändern.
Wie in den Kommentaren erwähnt, Apple entmutigt die Verwendung der Unterklassenbildung MKMapView
. Obwohl dies im Ermessen des Entwicklers liegt, ändert diese spezielle Verwendung das Verhalten der Karte nicht und funktioniert bei mir seit über drei Jahren ohne Zwischenfälle. Allerdings sagt die bisherige Leistung nichts über die zukünftige Kompatibilität aus. Ausschluss der Gewährleistung .