Ios 在GMSMapView中检测平移手势
我有一个GMSMapView,它允许在里面做一些手势(平移、缩放等)。我正试图从这个视图中实现一个Facebook风格的滑出菜单。在允许所有其他手势正常工作的情况下,从该视图中检测平移手势的最佳方法是什么?我相信有更好的方法可以做到这一点,但这就是我目前所拥有的吗?有什么建议吗Ios 在GMSMapView中检测平移手势,ios,objective-c,uigesturerecognizer,uipangesturerecognizer,gmsmapview,Ios,Objective C,Uigesturerecognizer,Uipangesturerecognizer,Gmsmapview,我有一个GMSMapView,它允许在里面做一些手势(平移、缩放等)。我正试图从这个视图中实现一个Facebook风格的滑出菜单。在允许所有其他手势正常工作的情况下,从该视图中检测平移手势的最佳方法是什么?我相信有更好的方法可以做到这一点,但这就是我目前所拥有的吗?有什么建议吗 -(void)didPan:(UIPanGestureRecognizer*)gesture { static BOOL g1 = NO; if(gesture.state == UIGestureRe
-(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.
}
}
}
-(void)didPan:(UIPangestureRecognitor*)手势
{
静态布尔g1=否;
if(signature.state==UIGestureRecognitizerStateStart)
{
CGPoint位置=[手势位置视图:self];
如果(位置x<90)
g1=是;
}
if(signature.state==UIGestureRecognitzerStateChanged&&g1)
{
CGPoint速度=[手势速度视图:自我];
如果(速度x>0)
{
//滑出菜单
}
其他的
{
//普通地图视图平移、缩放等。
}
}
}
如果您使用-requiresgestureRecognitizerToFail:
将地图平移手势设置为要求屏幕边缘平移手势识别器首先失败,则可能会对您有所帮助
或者,为g1手势识别器实现UIgestureRecognitizerDelegate方法
-gestureRecognzierShouldBegin:
,如果点小于90,则返回NO(如上所述)。Paul de Lange的想法正确,但还有几点需要记住
您不能将GMSMapView
中的手势设置为使用requiregesturecognizertofail:
失败,因为这些手势被SDK隐藏。您可以做的是修改GMSMapView
实例的设置。特别是,设置mapView.settings.ScrollPictures=NO
将在平移时阻止地图滚动
在完成UIScreenedGepangestureRecognitor
手势后,请记住将其设置回YES