Аннотации MKMapView не выбираются второй раз
В моем приложении iPad я использую карту iOS, чтобы отображать несколько точек, используя аннотацию. Я хочу также отображать настраиваемую выноску, когда была выбрана аннотация. Я использую UIPopoverController для отображения выноски. Однако это работает только при первом обращении к аннотации. Если я хочу увидеть выноску в одной аннотации, сначала нужно выбрать другую аннотацию, а затем нажать предыдущую аннотацию.
В основном этот метод делегата не запускается второй раз.
-(void)mapView:(MKMapView *)mapView
didSelectAnnotationView:(MKAnnotationView *)view
Я использую раскадровку, и там установлен делегат. Вот как я установил аннотации.
[self.mapView addAnnotations:self.placemarksArray]
Может кто-нибудь, пожалуйста, дайте мне знать причину вышеуказанного вопроса?
Благодаря
Ответы
Ответ 1
Документация для метода делегата didSelectAnnotationView
говорит об этом в разделе "Обсуждение":
Вы можете использовать этот метод для отслеживания изменений в состоянии выбора представлений аннотаций.
(Я добавил полужирный и курсив на слово "изменения".)
Это означает, что метод делегата запускается только тогда, когда состояние представления аннотации изменяется с "не выбран" на "выбранный".
Чтобы избежать необходимости использовать другую аннотацию или карту (которая изменяет состояние выбранной аннотации на "не выбрано" ) и снова обнаруживать "выбор" в той же аннотации, вы можете принудительно отменить выбор в верхней части метод didSelectAnnotationView
:
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
{
[mapView deselectAnnotation:view.annotation animated:YES];
//existing code to handle tap on annotation...
}
Ответ 2
Версия Swift 3:
mapView.deselectAnnotation(view.annotation, animated: true)