Single Tippen Sie auf MKMapView, ohne den Doppeltippen-Zoom zu unterbrechen

8

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:

%Vor%

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.

    
Paul Cezanne 26.11.2012, 19:20
quelle

4 Antworten

2

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.

    
Anna 28.11.2012, 13:41
quelle
4

Optimal auf iOS 8 funktioniert die Doppeltipp-Aktion null

%Vor%     
Sanjeev Rao 03.04.2015 10:44
quelle
0

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%     
Alex Zak 02.04.2014 21:54
quelle
0

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%     
Ben Lachman 30.05.2017 19:09
quelle

Tags und Links