Objective c 在MKMapView(iOS 6)中禁用双击缩放

Objective c 在MKMapView(iOS 6)中禁用双击缩放,objective-c,ios,ios5,mkmapview,ios6,Objective C,Ios,Ios5,Mkmapview,Ios6,在iOS5中,我可以通过一个新的双击手势覆盖双击缩放来禁用它。但似乎mkmapview附带的手势识别器阵列中不再有双击手势 NSArray *gestureRecognizers = [_mapView gestureRecognizers]; for (UIGestureRecognizer *recognizer in gestureRecognizers) { NSLog(@"%@", recognizer); } 在ios 6中不返回任何内容,而在ios 5中,它将返回两个识别

在iOS5中,我可以通过一个新的双击手势覆盖双击缩放来禁用它。但似乎mkmapview附带的手势识别器阵列中不再有双击手势

NSArray *gestureRecognizers = [_mapView gestureRecognizers];
for (UIGestureRecognizer *recognizer in gestureRecognizers) {
    NSLog(@"%@", recognizer);
}

在ios 6中不返回任何内容,而在ios 5中,它将返回两个识别器,一个用于单点击,一个用于双点击。

您想让用户对视图执行任何操作吗?如果没有,将
userInteractionEnabled
设置为
NO
就足够了。如果是,您需要允许哪些特定的交互?除了双重窃听之外什么都有?为什么要禁用这一交互


我们对您的用例了解得越多,我们能提供的答案就越好。

您可以使用长时间的点击手势,这很有效。

我会浏览MKMapView子视图的手势识别器。它可能还在某个地方

当然,搞乱另一个视图的GRs是有点可疑的,并且可能会在下次苹果改变MKMapView的某些内容时中断

编辑:为了方便阅读本文的其他人,请检查它是否是一个
UITapgestureRecognitor
,以及
numberOfTapsRequired==2
numberOfTouchesRequired==1

此外,不要在地图上禁用双抽头,而是考虑在注释上添加双抽头GR,然后执行<代码> [MaDouBLeTePGR] AdReReSureReCurgNeNeZeltoFel:AddioTouBueTAPGR] 。再一次,hacky-如果它在下一次操作系统更新时坏了,不要怪我

这对我很有用: [\u mapView.subviews[0]AddGestureRecognitor:MyDoubleTapOverrider]

这对我很有用:

    //INIT the MKMapView    
    -(id) init{
         ...
         [self getGesturesRecursive:mapView];
         ...
    }
然后让递归函数在子视图中循环并找到GR:s

    -(void)getGesturesRecursive:(UIView*)v{
         NSArray *gestureRecognizers = [v gestureRecognizers];
         for (UIGestureRecognizer *recognizer in gestureRecognizers) {
             if ([recognizer isKindOfClass:[UITapGestureRecognizer class]]) {                  
                [v removeGestureRecognizer:recognizer];
             }
        }

        for (UIView *v1 in v.subviews){
            [self getGesturesRecursive:v1];
        }
    }

此示例删除所有tap GR:s。但是我想你可以指定删除你想要的任何内容。

我希望用户能够点击,而不是双击。在我的应用程序中,用户有时必须在一个注释上点击多次,因此我不希望应用程序缩放。谢谢你的帮助