私はすでにMKMapViewで使用されているものに加えて、独自のジェスチャ認識機能を実装しようとしています。今、私は地図をタップしてピンを設定することができます。この動作は私のUITapGestureRecognizerによって実現されます。すでに存在するピンをタップすると、ジェスチャ認識機能は何も行いませんが、代わりにこのピンのコールアウトバブルが表示されます。 UIGestureRecognizerDelegateは次のようになります。iPhone:MKMapViewを別のUITapGestureRecognizerと組み合わせる
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if (gestureRecognizer == self.tapRecognizer)
{
bool hitAnnotation = false;
int count = [self.mapView.annotations count];
int counter = 0;
while (counter < count && hitAnnotation == false)
{
if (touch.view == [self.mapView viewForAnnotation:[self.mapView.annotations objectAtIndex:counter]])
{
hitAnnotation = true;
}
counter++;
}
if (hitAnnotation)
{
return NO;
}
}
return YES;
}
これは問題なく動作します。私の唯一の問題は、ピンとダブルタップのコールアウトバブルです。通常はダブルタップがズームインに使用されます。これはまだ機能しますが、これに加えて、新しいピンも取得します。これを避ける方法はありますか?
その他の問題は、ピンのコールアウトバブルで発生します。私はこの場所(上記のコードを参照)に新しいピンを設定せずにピンをタップすることでバブルを開くことができますが、私はそれをタップしてバブルを閉じたいとき、別のピンが設定されます。私の問題は、ユーザーがコールアウトバブルをタップした場合、touch.viewで確認できないということです。これは私が知る限り、通常のUIViewではないからです。この問題のアイデアや回避策はありますか? MKMapView
でシングルタップから、ダブルタップを区別する:
おかげ
こんにちは、あなたの答えはありがとうございます。これは正しい方向に私を指摘した。最初の問題は解決されるようです。 2番目の問題について何か提案がありますか? – Lars