Verwenden Sie UIScreenEdgePanGestureRecognizer, ohne MKMapView zu verschieben

8

Ich habe einen UIViewController, der eine MKMapView enthält (tatsächlich enthält es einen Vollbild-Container, der die MKMapView enthält, sollte aber keine Auswirkungen haben)

Ich habe einen UIScreenEdgePanGestureRecognizer (um eine Schublade anzuzeigen) wie folgt implementiert:

%Vor%

und damit es funktioniert, musste ich die folgende Methode hinzufügen (mit JA):

%Vor%

Aber dann bewegt sich die Karte zur gleichen Zeit wie die Schublade! Ich habe alle möglichen Tricks versucht, um es zu verhindern, aber war nicht in der Lage ... (Ich probierte shouldBeRequiredToFailByGestureRecognizer oder requireGestureRecognizerToFail zum Beispiel)

Irgendeine Idee, wie ich verhindern könnte, dass sich das MapView bewegt, wenn die Geste ein ScreenEdgePan von LeftEdge ist?

    
Sebastien C. 18.07.2014, 20:41
quelle

5 Antworten

13

Was ich in meiner App getan habe, war Folgendes:

%Vor%

Setzen Sie den Delegaten dann auf YES, wie Sie gesagt haben

%Vor%

Und aktivieren / deaktivieren Scrolling der Mapview wie folgt

%Vor%

Ich hoffe, es hilft.

    
Cedrick 22.07.2014 12:11
quelle
3

Die Schwenkgeste auf der Karte muss abgebrochen werden, sobald der UIScreenEdgePanGestureRecognizer zu erkennen beginnt. Um dies zu erreichen, genügt es, scrollEnabled auf NO kurzzeitig zu setzen. Dies wird den anderen Gestenerkenner abbrechen.

%Vor%     
Felix 22.07.2014 13:32
quelle
1
%Vor%     
Adam Fallon 25.07.2014 09:44
quelle
1

Ich glaube, dass die schnellste Lösung darin besteht, eine dünne Ansicht (mit transparenter Hintergrundfarbe) oben auf mapView zu erstellen, wo Ihre Geste in mapView nicht funktionieren sollte. d.h.

    
arturdev 28.07.2014 06:56
quelle
1

Die folgende Kombination funktionierte für mich, ohne die Kartenansicht zu berühren.

%Vor%     
Mingming 24.12.2015 04:25
quelle