1

我正在尝试编写一个应用程序,用户可以在其中单击具有多个叠加层(所有相同类型)的地图上的 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 上尝试了相同的方法。但是,它不适用于带有叠加层的地图。

有任何想法吗?

4

0 回答 0