我试图以编程方式选择我的注释。因此,在我的自定义地图渲染器中,我使用了此功能。

    _iosMap.SelectAnnotation(myAnnotation, true);



myAnnotation可以正确选择,但是此后立即取消选择。 (信息窗口显示的消失了一秒钟)我不知道为什么。我的意思是,当用户在某些区域中轻按时,我的程序将注释添加到地图,然后立即调用SelectAnnotation以显示信息窗口。

我尝试实现此solution

    void OnDidDeselectAnnotationView(object sender, MKAnnotationViewEventArgs e) {
     MKMarkerAnnotationView annotationView = (MKMarkerAnnotationView) e.View;
   
     if (someBoolToDetectUnwantedDeselect) {
      _iosMap.SelectAnnotation(annotationView.Annotation, true);
     }
    }


但这没有用。我的意思是注释被选中(触发了OnDidSelectAnnotationView方法。)但是没有出现信息窗口。我该如何解决?

我尝试使用GestureRecognizerShouldBegin(将其查看为here。)但是在选择时,取消选择GestureRecognizerShouldBegin不会触发。

另外:我在这里重现该问题。

http://www.mediafire.com/file/s1ahsdum258yqpk/selectannotationproblem.rar/file

当在地图上轻击别针时,SelectAnnotation会在CustomMapRenderer中触发。信息窗口显示的瞬间消失了。

当我将其添加到OnDidDeselectAnnotationView时

((MKMapView)Control).SelectAnnotation(((MKMapView)Control).Annotations.ElementAt(0), true);


就像以前一样,在第一次点击时消失。在第二,第三次点击时,它可以正常工作。为什么要先?

最佳答案

我通过增加延迟来解决它。

private void OnTap(UITapGestureRecognizer recognizer)
{
   //
    PerformSelector(new ObjCRuntime.Selector("ShowAnnotation"), null, 0.6f);
}

[Export("ShowAnnotation")]
void ShowAnnotation()
{
    ((MKMapView)Control).SelectAnnotation(((MKMapView)Control).Annotations.ElementAt(0), true);
}

关于ios - Xamarin IOS中的SelectAnnotation也取消选择,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58742551/

10-09 16:30
查看更多