Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SelectAnnotation在Xamarin IOS中也取消选择_Ios_Xamarin_Xamarin.ios_Annotations - Fatal编程技术网

SelectAnnotation在Xamarin IOS中也取消选择

SelectAnnotation在Xamarin IOS中也取消选择,ios,xamarin,xamarin.ios,annotations,Ios,Xamarin,Xamarin.ios,Annotations,我试图以编程方式选择注释。所以在我的自定义地图渲染器中,我使用了这个     _iosMap.SelectAnnotation(myAnnotation, true); myAnnotation被选中了,但就在那之后,它被取消选中了。(信息窗口显示了一秒钟,然后消失了)我不知道为什么。我的意思是,当用户点击某些区域时,我的程序会向地图添加注释,然后调用SelectAnnotation来显示信息窗口 我试图实现这一点 但它没有起作用。我的意思是注释被选中(OnDidSelectAnnotati

我试图以编程方式选择注释。所以在我的自定义地图渲染器中,我使用了这个

    _iosMap.SelectAnnotation(myAnnotation, true);
myAnnotation被选中了,但就在那之后,它被取消选中了。(信息窗口显示了一秒钟,然后消失了)我不知道为什么。我的意思是,当用户点击某些区域时,我的程序会向地图添加注释,然后调用SelectAnnotation来显示信息窗口

我试图实现这一点

但它没有起作用。我的意思是注释被选中(OnDidSelectAnnotationView方法被激发),但信息窗口没有出现。我怎样才能解决这个问题

我试着使用GestureRecognitzerShouldBegin(看到了),但在选择时,取消选择GestureRecognitzerShouldBegin没有启动

补充:我在这里复制了这个问题

当点击除pin之外的地图上的任意位置时,CustomMapRenderer中的SelectAnnotation将激发。信息窗口显示一秒钟,然后消失

当我将其添加到OnDidUncelleAnnotationView时

((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);
}


能否在自定义渲染器中共享更多代码以重现此问题?我测试了官方示例,并且
SelectAnnotation
在我这方面运行良好。我添加了一个链接。谢谢。好的,我稍后会检查并更新您。您可以将其标记为答案,这将帮助更多有相同问题的人!
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);
}