Ios didSelect执行未等待didSelect动画结束

Ios didSelect执行未等待didSelect动画结束,ios,swift,animation,mapkit,Ios,Swift,Animation,Mapkit,我有一张有多个图钉的地图。单击每个接点时,将显示一个视图,其中包含选定接点的特定信息。那么让我们说一下关于pin的位置信息 设想以下用例: 1-选择管脚后,使用有关选定管脚的信息设置视图显示的动画 2-选择不同的管脚时,为步骤1中选择的视图的隐藏设置动画 3-步骤2中的动画完成后,使用有关新选定管脚的特定信息设置视图显示的动画 我已经实现了以下mapKit功能 func mapView(_ mapView: MKMapView, didDeselect view: MKAnnotationVie

我有一张有多个图钉的地图。单击每个接点时,将显示一个视图,其中包含选定接点的特定信息。那么让我们说一下关于pin的位置信息

设想以下用例:

1-选择管脚后,使用有关选定管脚的信息设置视图显示的动画

2-选择不同的管脚时,为步骤1中选择的视图的隐藏设置动画

3-步骤2中的动画完成后,使用有关新选定管脚的特定信息设置视图显示的动画

我已经实现了以下mapKit功能

func mapView(_ mapView: MKMapView, didDeselect view: MKAnnotationView) {

        UIView.animate(withDuration: 0.5, animations: {

            // Animate views

        })

}

func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView){
     // did select code

     UIView.animate(withDuration: 0.5, animations: {

          // Animate views

     })
}
一旦我尝试执行步骤2的操作,就会执行didDeselct函数。然后,执行didSelect函数中的逻辑。这是可行的,但有一个问题。在执行didSelect功能之前,didSelect中动画的执行不会完成

如何阻止执行didSelect,直到didDeselct中的动画完成


请记住,我仍然需要didSelect函数,因此我无法将此函数的逻辑放在动画代码中。

我建议您编写一个函数来显示和隐藏相关的
视图。该功能将需要处理这两个过程。您还可以创建一个
Bool
变量,以了解是否有动画正在进行。如果是,则等待完成,并在完成后再次触发该函数。您可以使用变量的
get
set
块或
观察者模式
。我希望这会有所帮助。

谢谢,这是我一直在想的,但我认为有一种方法可以做到这一点,这是内置在框架中的。我会尝试一下。也许有一种方法是内置在框架中的,但我不是一个在swift方面有那么多经验的人。试试这个,如果它工作,没有问题;如果没有,请通知我。谢谢,工作很好