我正在使用用户必须在其上添加注释的地图开发应用程序。很简单。问题是,在我在地图上添加点击识别器之后,双击后应该触发的缩放不再起作用。这似乎是一个很常见的问题,因为我发现(并尝试过,我发誓)很多潜在的解决方案都没有成功。
我尝试的最新解决方案(我自己找到后感觉非常聪明)是尝试检索 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。
谢谢 !