Ios 使用MMDrawerController时,使谷歌地图保持其位置

Ios 使用MMDrawerController时,使谷歌地图保持其位置,ios,objective-c,uiviewcontroller,uinavigationcontroller,Ios,Objective C,Uiviewcontroller,Uinavigationcontroller,我正在我的项目中使用MMDrawerController和GoogleMap的api。 我想要一个谷歌地图的视图,它有两个左右滑动的导航条,它们只有在我分别从左到右在20px范围内滑动时才会出现。 一切正常,除了: 当我用属性在mapView的benzel(20px)上滑动时: [drawerController setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeBezelPanningCenterView]; 它还使谷歌地图的视图对平移手

我正在我的项目中使用MMDrawerController和GoogleMap的api。 我想要一个谷歌地图的视图,它有两个左右滑动的导航条,它们只有在我分别从左到右在20px范围内滑动时才会出现。
一切正常,除了: 当我用属性在mapView的benzel(20px)上滑动时:

[drawerController
setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeBezelPanningCenterView];
它还使谷歌地图的视图对平移手势做出响应,并使其滑动

亲密的姿态

[drawerController setCloseDrawerGestureModeMask:MMCloseDrawerGestureModeAll];
适合于

[drawerController 
setCenterHiddenInteractionMode:MMDrawerOpenCenterInteractionModeNone];
我怎样才能使地图在从抽屉中滑出时保持静止

谢谢大家!

--------------

回答(stackoverflow不让我回答我的问题,因为它是在8小时前发布的)

我找到了解决办法。功劳归于我。我只是修改了他的一些代码

- (void)viewDidLoad
{
self.view = _mapView;

    [[self.view.subviews[0] gestureRecognizers] enumerateObjectsUsingBlock:^(UIGestureRecognizer * gesture, NSUInteger idx, BOOL *stop){
        [gesture setDelegate:self];
    }];
}

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
    CGPoint location = [touch locationInView:self.view];
    CGRect boundingRect = self.view.bounds;
    if([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]){
        boundingRect.origin.x+=20;
        boundingRect.size.width-=40;
    }
    return CGRectContainsPoint(boundingRect, location);
}


-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
    return YES;
}
注意:因此
手势识别器:应与手势识别器同时识别:
将可用

20和40表示视图的左侧和右侧区域。如果平移的起始位置在这些区域内,则地图不会移动。 如果你只想留下:把它们改成20和20。
如果希望它们更小,如10和20,请记住更改
CGFloat const MMDrawerBezelRange=20.0f(默认值)在MMDrawerController.m到10之间。

我发现了一个更优雅的解决方案,只需将UIgestureRecognitors绑定在一起,抽屉的平移手势就可以取代地图的平移手势:

// walk the drawer controller's gesture recognizers
UIGestureRecognizer *drawerPanGestureRecognizer = nil;
for (UIGestureRecognizer *gestureRecognizer in drawerController.view.gestureRecognizers) {
    // grab the pan gesture recognizer
    if ([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) {
        drawerPanGestureRecognizer = gestureRecognizer;
        break;
    }
}

// walk the map view's gesture recognizers
for (UIGestureRecognizer *gestureRecognizer in ((UIView *)mapView.subviews[0]).gestureRecognizers) {
    // to find the pan gesture recognizer
    if ([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) {
        // panning the drawer should prevent panning the map view
        [gestureRecognizer requireGestureRecognizerToFail:drawerPanGestureRecognizer];
        break;
    }
}