UIGestureRecognizerを使用してサブクラス化されたMKOverlayViewでイベントをキャプチャしようとしました。 しかし、セレクタは決して起動しません。何か案は?UIGestureRecognizerを使用したMKOverlayViewのジェスチャーイベントのキャプチャ
インタフェース:
#import <MapKit/MapKit.h>
@interface XYOverlayView : MKCircleView {}
-(void) viewTapped:(UIGestureRecognizer *)gestureRecognizer;
@end
IMP:
@implementation XYOverlayView
- (id)initWithOverlay:(id <MKOverlay>)overlay
{
if(self = [super initWithOverlay:overlay])
{
self.userInteractionEnabled = TRUE;
self.multipleTouchEnabled = TRUE;
UITapGestureRecognizer *tapRecogniser = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewTapped:)];
[self addGestureRecognizer:tapRecogniser];
[tapRecogniser release];
}
return self;
}
-(void) viewTapped:(UIGestureRecognizer *)gestureRecognizer
{
NSLog(@"XYOverlayView tapped");
}
@end
ジェスチャー認識装置は、オーバーレイビュー上では動作しません。 'MKMapView'はすべてのオーバーレイビューをクラス' MKOverlayContainerView'のコンテナレイヤに入れ、 ' - [MKOverlayContainerView pointInside:withEvent:]'は常に 'NO'を返します。これは、タッチがオーバーレイビューの内側にあるとは決して考えられないため、オーバーレイビューにアタッチされたジェスチャ認識器には触れません。 –