2

我正在使用用户必须在其上添加注释的地图开发应用程序。很简单。问题是,在我在地图上添加点击识别器之后,双击后应该触发的缩放不再起作用。这似乎是一个很常见的问题,因为我发现(并尝试过,我发誓)很多潜在的解决方案都没有成功。

我尝试的最新解决方案(我自己找到后感觉非常聪明)是尝试检索 MkMapView 的“内置双击”识别器,这样我就可以在我的“单击”手势识别器中重用它。这就是我所做的:

- (void)viewDidLoad {
    [super viewDidLoad];

    NSArray *gestures = [map gestureRecognizers];

    for (UIGestureRecognizer *r in gestures) {
        if ([r class] == [UITapGestureRecognizer class]) {
            if (2 == [(UITapGestureRecognizer *)r numberOfTapsRequired]) {
                builtInDoubleTap = (UITapGestureRecognizer *)r;
                NSLog(@"BOOM! Found it!");
                return;
            }
        }
    }

    NSLog(@"Guess view did load");
    [self enableTapRecognizer];
}

在我的“enableTapRecognizer”方法中:

- (void)enableTapRecognizer {
    UITapGestureRecognizer *mapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handlePosition:)];

    if(builtInDoubleTap) {
        NSLog(@"require to fail builtInDoubleTap");
        [mapGestureRecognizer requireGestureRecognizerToFail: builtInDoubleTap];
    }

    [map addGestureRecognizer: mapGestureRecognizer];    
}

问题是,它从来没有显示我的“Boom!找到它!” 调试消息。为什么没有任何手势识别器双击后可以缩放?这真的没有意义,不是吗?

(我也尝试使用 UIGestureRecognizerDelegate 所以我的gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 方法返回YES...)

我现在有点绝望,所以如果有人有想法......也许我的地图配置有问题?

我的目标是 iOS5 并运行最新的 xCode。

谢谢 !

4

0 回答 0