Вы можете использовать UITapRecognizer
.В обработчике жестов вы можете получить доступ к координате, по которой пользователь нажал,
CGPoint touchLocation = [gesture locationInView:mapView];
CLLocationCoordinate2D coordinate = [mapView convertPoint:touchLocation toCoordinateFromView:mapView];
. Вы можете использовать эту координату для создания аннотации.Для этого вам нужно определить класс, соответствующий протоколу MKAnnotation
.Создайте и добавьте его экземпляр в mapView.
В методе делегата mapView:viewForAnnotation:
создайте и верните экземпляр MKPinAnnotationView
для аннотации.
Хотя есть предостережение.Добавление аннотации в обработчике жестов может быть не самым лучшим ходом, поскольку обработчик жестов не знает о выборе представления аннотации.Чтобы справиться с этим, вы можете использовать performSelector:withObject:afterDelay:
, чтобы запланировать добавление.Если вызван метод делегата mapView:didSelectAnnotationView:
, отмените запрос на выполнение.