简体   繁体   中英

Detect A Pan Gesture in GMSMapView

I have a GMSMapView that allows for a handful of gestures inside of it (pan, zoom, etc). I am trying to implement a Facebook style slide out menu from this view. What is the best way to detect a pan gesture from within this view while still allowing for all the other gestures to work properly? I'm sure there is a much better way to do this, but this is what I have so far? Any suggestions?

-(void)didPan:(UIPanGestureRecognizer*)gesture
{
    static BOOL g1 = NO;

    if(gesture.state == UIGestureRecognizerStateBegan)
    {
        CGPoint location = [gesture locationInView:self];

    if(location.x < 90)
        g1 = YES;
    }

    if(gesture.state == UIGestureRecognizerStateChanged && g1)
    {
        CGPoint velocity = [gesture velocityInView:self];
        if(velocity.x > 0)
        {
            //Slide out menu
        }
        else
        {
            //Normal map view panning, zooming, etc.
        }  
    }
}

Paul de Lange has the right idea, but there are a couple of additional points to keep in mind.

You can't set gestures from GMSMapView to fail with requiresGestureRecognizerToFail: because those are hidden by the SDK. What you can do is modify the settings of your instance of GMSMapView . In particular, setting mapView.settings.scrollGestures = NO will stop the map from scrolling while you pan over.

Just remember to set it back to YES after the UIScreenEdgePanGestureRecognizer gesture is complete.

The UIScreenEdgePanGestureRecognizer might help you if you set the maps pan gesture to require the screen edge pan gesture recognizer to fail first with -requiresGestureRecognizerToFail: .

Alternatively implement the UIGestureRecognizerDelegate method -gestureRecognzierShouldBegin: for the g1 gesture recognizer and return NO if the point is less than 90 (as you do above).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM