Я попытался выбрать аннотацию программно. Так что в моем собственном рендере карт я использовал это.
_iosMap.SelectAnnotation(myAnnotation, true);
myAnnotation был выбран правильно, но сразу после этого он был отменен. (Информационное окно показалось на секунду, а потом исчезло) Понятия не имею, почему. Я имею в виду, когда пользователь нажимает в определенных регионах, моя программа добавляет аннотацию к карте, и сразу после этого она вызывает SelectAnnotation для отображения информационного окна.
Я пытался реализовать это решение .
void OnDidDeselectAnnotationView(object sender, MKAnnotationViewEventArgs e) {
MKMarkerAnnotationView annotationView = (MKMarkerAnnotationView) e.View;
if (someBoolToDetectUnwantedDeselect) {
_iosMap.SelectAnnotation(annotationView.Annotation, true);
}
}
Но это не сработало. Я имею в виду, что выделена аннотация (запущен метод OnDidSelectAnnotationView.) Но информационное окно не появилось. Как я могу решить эту проблему?
Я пытался использовать GestureRecognizerShouldBegin (видел это здесь .) Но при выборе отмените выбор GestureRecognizerShouldBegin не сработал.
Добавление: я воспроизводилпроблема здесь.
http://www.mediafire.com/file/s1ahsdum258yqpk/selectannotationproblem.rar/file
При нажатии на карту в любом месте, кроме вывода SelectAnnotation, запускается в CustomMapRenderer. Информационное окно показывает на секунду, что оно исчезает.
Когда я добавил это в OnDidDeselectAnnotationView
((MKMapView)Control).SelectAnnotation(((MKMapView)Control).Annotations.ElementAt(0), true);
In исчезает при первом нажатии, как и раньше. И на втором, третьем нажатиях все работает нормально. Почему сначала?