我尝试使用UIGestureRecognizer捕获子类化MKOverlayView上的事件。 然而,选择器永远不会被解雇。有什么想法吗?
接口:
#import <MapKit/MapKit.h>
@interface XYOverlayView : MKCircleView {}
-(void) viewTapped:(UIGestureRecognizer *)gestureRecognizer;
@end
小鬼:
@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
答案 0 :(得分:0)
您忘记在界面中实施UIGestureRecognizerDelegate,您必须导入UIKit
#import <UIKit/UIKit.h>
@interface XYOverlayView : MKCircleView <UIGestureRecognizerDelegate>
答案 1 :(得分:0)
请务必指定numberOfTapsRequired
和numberOfTouchesRequired
,否则手势识别器不知道接受什么作为“点按”。
tapRecogniser.numberOfTapsRequired = 1;
tapRecogniser.numberOfTouchesRequired = 1;
答案 2 :(得分:0)
没有让这个工作。切换到自定义MKAnnotationView以捕获手势。这也具有窗口中的可拍区域保持相同尺寸的优点。
答案 3 :(得分:0)
我认为我的答案可能是一个解决方案:MKOverlayView and touches