didSelect 执行不等待 didDeSelect 动画结束

didSelect execution not waiting for didDeSelect animation to end

我有一张带有多个地图图钉的地图。单击每个图钉时,将显示一个视图,其中包含特定于所选图钉的信息。因此,让我们说出有关图钉的位置信息。

想象一下以下用例:

1- 选择图钉后,使用有关所选图钉的信息动画显示视图。

2- 选择不同的 pin 时,动画隐藏在步骤 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函数执行之前,didDeselect中动画的执行没有结束

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

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

我建议你写一个函数来显示和隐藏相关的view。将需要此功能来处理这两个过程。您还可以创建一个 Bool 变量来了解是否有任何动画正在进行。如果是,则 make 等待它完成并在完成时再次触发该功能。您可以使用变量的 getset 块或 Observer Pattern。我希望这会有所帮助。