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! Found it!」が表示されないことです。デバッグ メッセージ。ジェスチャ認識なしでダブルタップ後にズームできるのはなぜですか? それは本当に意味がありませんね。

(UIGestureRecognizerDelegate も使用してみました。したがって、gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer メソッドは YES を返します...)

私は今ちょっと必死なので、もし誰かがアイデアを持っているなら...私のマップ構成に何か問題があるのでしょうか?

私は iOS5 をターゲットにしており、最新の xCode を実行しています。

ありがとう !

4

0 に答える 0