我正在尝试编写一个应用程序,用户可以在其中单击具有多个叠加层(所有相同类型)的地图上的 MKCircleView 叠加层。根据用户单击的覆盖层,应显示特定消息。
我的第一种方法是在 mapView:viewForOverlay: 提供的 mapView 中添加一个 UITapGestureRecognizer:但这不起作用。
然后我将 MKCircleView 子类化并实现了以下方法:
//subclassed to handle event when touches are received
- (void) actionWhenClicked {
UIAlertView *a =[[UIAlertView alloc] initWithTitle:@"It worked!"
message:@"yeah"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles: nil];
[a show];
}
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[super touchesBegan:touches withEvent:event];
[self actionWhenClicked];
}
- (void) touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
[super touchesCancelled:touches withEvent:event];
[self actionWhenClicked];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
[super touchesEnded:touches withEvent:event];
[self actionWhenClicked];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
[super touchesMoved:touches withEvent:event];
[self actionWhenClicked];
}
地图上的每个叠加层都是上述子类的一个实例,因此应在触摸时做出响应。但是这些方法永远不会被调用。我在它起作用的 UIView 上尝试了相同的方法。但是,它不适用于带有叠加层的地图。
有任何想法吗?