0

MKOverlayまたはMKPolylineビューでタッチイベントを検出するにはどうすればよいですか?これを試し、MKPolylineViewにタペスチャを追加しましたが、成功しませんでした。

    - (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
         MKPolyline *mapPoly = (MKPolyline *)overlay;

                MKPolylineView *_ucPolyView = [[MKPolylineView alloc] initWithPolyline:mapPoly];

                _ucPolyView.strokeColor = [UIColor redColor];

    [_ucPolyView setUserInteractionEnabled:YES];
         UITapGestureRecognizer *polylineTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(polylineTapped:)];
            polylineTap.numberOfTapsRequired = 1;
            [_ucPolyView addGestureRecognizer:polylineTap];

}


-(void)polylineTapped:(UITapGestureRecognizer *)tapGesture
{
    NSLog(@"Polyline is %@",tapGesture.view);
}

しかし、polylineTappedメソッドは実行されません。達成したいのは、ユーザーがポリラインをタップするたびに、ポリラインの詳細を示すポップアップビューを表示することだけです。

4

2 に答える 2

0

ヒットが範囲外であっても、ビューの hitTest を変更してその子を調べる必要があります。

于 2013-05-09T13:07:06.337 に答える
0

私は同じ問題を抱えていて、MKMapView が MKOverlayView などの子ビューに伝播したすべてのイベントを食べるという結論に達しました。ピンチやズームなどを行うには、MKMapViewがタッチイベントを完全に制御する必要があると思います.

于 2013-03-16T22:01:17.497 に答える