【发布时间】:2014-02-05 22:09:55
【问题描述】:
我有一个 UITapGestureRecognizer 设置来在用户单击的地图上添加注释。我遇到的问题是当用户点击现有注释以查看工具提示时,工具提示会弹出,但另一个注释会添加到单击的注释后面的地图中。有没有办法在添加注释之前检测注释是否被点击并返回?
这是我的 viewDidLoad:
UITapGestureRecognizer *singleTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(foundTap:)];
singleTapRecognizer.numberOfTapsRequired = 1;
[self.mapView addGestureRecognizer:singleTapRecognizer];
还有我的触控功能:
-(IBAction)foundTap:(UITapGestureRecognizer *)recognizer
{
CGPoint point = [recognizer locationInView:self.mapView];
CLLocationCoordinate2D tapPoint = [self.mapView convertPoint:point toCoordinateFromView:self.view];
AGIAnnotation * annotation = [[AGIAnnotation alloc] initWithCoordinate:tapPoint];
// Some other stuff
[self.mapView addAnnotation:annotation];
}
感谢任何帮助。
【问题讨论】:
-
无关说明:在 convertPoint 调用中,您可能希望使用
toCoordinateFromView:self.mapView而不是self.view。self.view仅在地图视图占据整个屏幕时才有效。如果您将地图视图更改为小于屏幕(特别是如果它的原点不是 0,0),您将返回错误的点。
标签: ios mkmapview mapkit mkannotation