ユーザーが注釈を追加する必要があるマップを使用してアプリケーションに取り組んでいます。とてもシンプルです。問題は、マップにタップ認識機能を追加した直後に、ダブルタップ後にトリガーされるはずのズームが機能しなくなったことです。多くの潜在的な解決策を見つけた (そして試してみた) ため、これはかなり一般的な問題のようです。
私が試した最新の解決策 (自分で見つけた後は非常に賢いと感じました) は、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! Found it!」が表示されないことです。デバッグ メッセージ。ジェスチャ認識なしでダブルタップ後にズームできるのはなぜですか? それは本当に意味がありませんね。
(UIGestureRecognizerDelegate も使用してみました。したがって、gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer メソッドは YES を返します...)
私は今ちょっと必死なので、もし誰かがアイデアを持っているなら...私のマップ構成に何か問題があるのでしょうか?
私は iOS5 をターゲットにしており、最新の xCode を実行しています。
ありがとう !