我有一个方法,someMethod
当 a) 用户点击视图和 b) 当用户拖动视图时调用。在someMethod
中,有一个UIView animateWithDuration
块使视图顶部的工具栏消失,并相应地重置其框架。如果用户点击视图,而不是拖动它,someMethod
将在动画仍在完成时触发,这不是我想要的行为(简单地取消动画不起作用,因为完成块仍然触发(即使我检查'完成' BOOL)。所有事情都在考虑之中,我只是不希望在动画仍在进行时触发此方法。
显然,一个简单的解决方案是使用 a 设置手动锁定,BOOL
并且只允许在锁定空闲时调用该方法。
我想知道,有没有更优雅的方法来完成这个?可以使用 GCD 或其他一些库来实现这一点,所以它更简单吗?
更新:我确实尝试使用同步,但问题是该方法触发动画,完成,但动画仍在另一个线程上运行。还有其他想法吗?