我正在尝试编写一个应用程序,用户可以使用多个叠加层(所有相同类型)单击地图上的MKCircleView叠加层。根据用户点击的特定消息应显示的覆盖区。
我的第一种方法是在mapView中添加一个由MapView提供的UITapGestureRecognizer:viewForOverlay:但是它没有用。
然后我将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上尝试了相同的方法。但是,它在带有叠加层的地图上不起作用。
有什么想法吗?