Ich möchte eine PIN auf meine MKMapView
setzen, wenn der Benutzer auf die Karte klickt. Ich habe den PIN-Code funktioniert, ich habe den einzelnen Tipp funktioniert, aber wenn ich doppelt tippen, um zu zoomen, bekomme ich einen einzigen Tipp zuerst. Hier ist mein Code, um die Erkenner einzurichten:
Nun, das ist nicht überraschend, um Apple zu zitieren:
Hinweis: Im Fall von Einfach- oder Doppeltipp-Gesten, wenn a Die Gestenerkennung mit einem Fingertipp erfordert kein Doppeltippen Erkenner zu scheitern, sollten Sie erwarten, Ihren Single-Tap zu erhalten Aktionen vor dem Doppeltippen, auch im Falle eines Double Zapfhahn. Dies ist ein erwartetes und wünschenswertes Verhalten, weil der beste Benutzer ist Erfahrung beinhaltet im Allgemeinen stapelbare Aktionen.
Also habe ich requireGestureRecognizerToFail
zu meinem single tap recognizer hinzugefügt.
[singleTap requireGestureRecognizerToFail: doubleTap];
und dies stellt sicher, dass meine Einzeltipp-Erkennung nicht doppelt abgetippt wird.
Aber ...
Jetzt bekommt mein Doppeltipp-Erkenner die Doppel-Taps und MKMapView
bekommt sie nicht. Ich habe versucht, cancelsTouchesInView
auf NO
im Erkenner zu setzen, aber das hat auch nicht geholfen.
Ich brauche also einen Weg, um zu verhindern, dass mein Single Tap Recognizer zweimal tippt (was unwahrscheinlich erscheint) oder um mein Double Tap Event auf meine mapView zu bekommen.
Der angegebene Code scheint in iOS 6 einwandfrei zu funktionieren.
Der Doppeltipp wird automatisch von der Kartenansicht gehandhabt, ohne den Einzeltipp zu beeinträchtigen.
In iOS 5.x implementieren Sie die shouldRecognizeSimultaneouslyWithGestureRecognizer
-Delegatenmethode und geben YES
zurück, damit die Kartenansicht ihre normale Doppeltippbehandlung ausführt, ohne dass dies Ihre Einzeltippfunktion beeinträchtigt. co_de% Eigenschaft des Doppeltipp-Gestenerkenners nur).
Nicht sicher, warum dies in iOS 6 nicht erforderlich ist.
Ich fand diesen Beitrag , der mir sehr geholfen hat ...
Im Grunde müssen Sie Apples Gestenerkennung finden und sicherstellen, dass Sie nicht mit ihm konkurrieren.
Jonathans Lösung war fast perfekt, bis auf eine Sache:
Da in iOS 7 MKView alle Gesten in einer Unteransicht hat. Es ist ein bisschen praktisch, wenn Sie unterscheiden wollen, welche Ihrer sind (direkt zu der MKMap hinzugefügt) und welche von Apple, aber es könnte irgendwo in der Zukunft brechen ....
Was ich getan habe, war, die ganze Unteransicht der Karte durchzugehen, in der Hoffnung, dass sie flexibel genug ist, um zumindest einigen zukünftigen Änderungen standzuhalten ...
Sieht ungefähr so aus:
%Vor%Swift 3-Version auf iOS 10:
%Vor%Beachten Sie, dass der einzelne Tap in IB erstellt wird. Es könnte leicht in Code wie folgt erstellt werden:
%Vor%