2012-01-03 6 views
2

iPhone用マップベースのアプリケーションを開発しています。私たちは、MapView上でのドラッグの始まりとピンチジェスチャーの開始を検出する必要があります。iPhone上でのピンチジェスチャーの検出MapView

ドラッグの開始をregionWillChangeデリゲートメソッドを使用して検出できます。ピンチジェスチャーの開始を検出することはできません。

ピンチジェスチャーの開始を検出する方法を探しています。 MapViewで可能ですか?

ありがとうございました。

編集: 次のコードで試してみましたが、うまくいかなかった。

ダブルタップジェスチャ認識機能は、同様のコードを使用してMapViewで作業しています。

UITapGestureRecognizer *Tap= [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(checktap)]; 
[self.mapView addGestureRecognizer:Tap]; 
[Tap release]; 

答えて

0

あなたはリンゴのサンプルコード参照できます。

http://developer.apple.com/library/ios/#samplecode/WorldCities/Introduction/Intro.html

をコードはMKMapView

+0

おかげで、次のメイクを.M。サンプルコードを参照しましたが、ピンチとダブルタップのジェスチャ検出の処理方法は見つかりませんでした。 – Sunflower

+0

ピンチジェスチャの検出を有効にするには、zoomEnabledプロパティがYESに設定されていることを確認します。ズームレベルを変更するには、setRegion:animated:メソッドを呼び出します。 – sahiti

+0

私たちはzoomEnabledプロパティーセットでチェックしました。ピンチジェスチャーの開始をまだ検出していません。 – Sunflower

0

の両方にドラッグ&ズームの操作を示しているあなたは、までごMapViewのワイヤにジェスチャー認識機能を追加することができます特定のゲストを扱うための行動... とIBActionでは、特定のゲストの開始/終了を検出することができます。

例:

- (IBAction)handlePanGuesture:(UIGestureRecognizer *)recogonizer { 
    if (recogonizer.state == UIGestureRecognizerStateBegan) { 
     // do stuff 
    } 
    } 
+0

お返事ありがとうございます。提供されたデリゲートメソッドを使用してみました。タップジェスチャーは検出できますが、それを使ってピンチジェスチャーを検出することはできません。 UITapRecognizerとUIPinchRecognizer – Sunflower

+0

を使用してみましたが、ドキュメンテーションごとにstateBeganで呼び出されるジェスチャーアクションメソッドが表示されるので、コードを投稿してください。 –

4

完璧と簡単な解決策。

最初のあなたの中にあなたの中に二つの方法以下の追加よりも、.hファイル をUIGestureRecognizerDelegateを追加し、ファイル

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
    return YES; 
} 

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 

{ 
    return YES; 
} 

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer 

{ 
    return YES; 
} 

のviewDidLoad

の変化に答えため
[self.view insertSubview:mapView atIndex:0]; 

UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(yourmethod)]; 
[pinch setDelegate:self]; 
[pinch setDelaysTouchesBegan:YES]; 
[self.mapView addGestureRecognizer:pinch]; 
[pinch release]; 

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(youemethod)]; 
[tap setDelegate:self]; 
[self.mapView addGestureRecognizer:tap]; 
[tap release];