在GMSMapView中检测平移手势

i2F*_*ffy 11 objective-c uigesturerecognizer ios uipangesturerecognizer gmsmapview

我有一个GMSMapView,允许在其内部进行少量手势(平移,缩放等).我试图从这个视图实现Facebook风格的滑出菜单.从这个视图中检测平移手势同时仍然允许所有其他手势正常工作的最佳方法是什么?我确信有更好的方法可以做到这一点,但这是我到目前为止所拥有的?有什么建议?

-(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.
        }  
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 7

Paul de Lange有正确的想法,但还有几点要记住.

您无法将手势设置GMSMapView为失败,requiresGestureRecognizerToFail:因为SDK会隐藏这些手势.你可以做的是修改你的实例的设置GMSMapView.特别是,mapView.settings.scrollGestures = NO当您平移时,设置将阻止地图滚动.

请记住YESUIScreenEdgePanGestureRecognizer手势完成后将其重新设置.