2017-01-08 31 views
0

我有一个包含多个地图引脚的地图。单击每个引脚时,将显示一个视图,其中包含特定于所选引脚的信息。因此,让我们说说有关引脚的位置信息。didSelect执行不等待didDeSelect动画结束

设想以下用例:

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函数之前,didDeselect中的动画执行没有完成。

如何在didDeselct中的动画完成之前阻止didSelect的执行。

请记住,我仍然需要didSelect函数,所以我不能将这个函数的逻辑放在动画代码中。

回答

2

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

+0

谢谢,这是我在想什么,但我认为有一些方法可以做到这一点,这是内置于框架。我会试试这个。 –

+0

也许有一种内置于框架中的方式,但我不是一个能够迅速获得丰富经验的人。试试这个,如果有效的话,没问题;如果没有,请通知我。 – Faruk

+0

谢谢,工作很好 –