Ich möchte einen Pin auf meinem MKMapView
fallen lassen, wenn der Benutzer nur auf die Karte klopft. 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 ist den Erkenner Setup zu bekommen:Single Tippen Sie auf MKMapView ohne zu brechen Doppeltippen Zoom
self.doubleTap = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(handleDoubleTap:)];
self.doubleTap.numberOfTapsRequired = 2;
self.doubleTap.numberOfTouchesRequired = 1;
[mapView_ addGestureRecognizer:doubleTap_];
self.singleTap = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(handleGesture:)];
self.singleTap.numberOfTapsRequired = 1;
self.singleTap.numberOfTouchesRequired = 1;
[self.singleTap requireGestureRecognizerToFail: doubleTap_];
[mapView_ addGestureRecognizer:singleTap_];
Nun ist dies nicht überraschend, zu zitieren Apple:
Hinweis: Im Fall des Einzel Hahn gegen Doppel-Tap Gesten, wenn Ein One-Tap-Gestenerkenner erfordert nicht die Doppeltipp- Erkennung zu scheitern, sollten Sie erwarten, Ihre One-Tap-Aktionen vor Ihrer Doppeltipp-Aktionen, auch im Falle einer Doppel tippen Sie auf. Dies ist ein erwartetes und wünschenswertes Verhalten, da die beste Benutzererfahrung im Allgemeinen mit stapelbaren Aktionen verbunden ist.
Also habe ich requireGestureRecognizerToFail
zu meinem single tap recognizer hinzugefügt.
[singleTap requireGestureRecognizerToFail: doubleTap];
und dies stellt sicher, dass mein single tap recognizer nicht doppelt klopft.
Aber ...
Nun meine Doppel-Tippen Erkenner bekommt die Doppelhähne und MKMapView
hat sie nicht bekommen. Ich habe versucht, cancelsTouchesInView
zu NO
im recognizer einzustellen, aber das half auch nicht.
Also muss ich entweder verhindern, dass mein Single Tap Recognizer doppelt klopft (was unwahrscheinlich erscheint) oder mein Double Tap Event auf mein mapView bekommen.
Können Sie den Code anzeigen, den Sie verwenden, um die Gestenerkennung hinzuzufügen? Mit welcher iOS-Version testeest du? Haben Sie versucht, YES von der Delegate-Methode shouldRecognizeSimultouslyWithGestureRecognizer zurückzugeben? – Anna
Frage bearbeitet, um mehr Code zu haben. Ich teste mit iOS5.1. Habe den Delegierten-Befehl shouldRecognizeSimultouslyWithGestureRecognizer noch nicht ausprobiert, das mache ich jetzt. –
shouldRecognizeSimultanelyWithGestureRecognizer = YES hat den Trick gemacht, mache das eine Antwort und ich werde es als die richtige markieren. Vielen Dank! –