在当前动画完成之前开始dismissViewControllerAnimated

Posted

技术标签:

【中文标题】在当前动画完成之前开始dismissViewControllerAnimated【英文标题】:dismissViewControllerAnimated started before present animation is finished 【发布时间】:2014-06-17 09:39:39 【问题描述】:

我有一个由 segue 事件呈现的 UIViewController 对象。 该对象处理条码扫描并启动dismissViewControllerAnimated方法返回到之前的View Controller。 如果条码被立即扫描(在 segue 动画完成和self.isBeingPresented == true 之前),则dismissViewControllerAnimated 无法运行

(Warning: Attempts to dismiss view controller <SearchBarcodeViewController: 0x155d4720> while a presentation or dismiss is in progress!)

如何在调用dismissViewContorllerAnimated 之前延迟dismissViewContorllerAnimated 调用或取消演示动画?

【问题讨论】:

Attempt to dismiss from view controller while a presentation or dismiss is in progress 的可能重复项 @Neeku,在那篇文章中我的问题没有答案。如何延迟dismissViewControllerAnimated或取消演示动画 您可以延迟设置计时器:developer.apple.com/library/mac/documentation/Cocoa/Reference/… 但是延迟不是解决问题的方法。如果您想拥有正确的代码,则必须以正确的方式进行操作。还有很多其他帖子讨论了同样的问题。 【参考方案1】:

您应该只在视图显示后运行条形码扫描代码,以确保它不会在此之前扫描条形码。

假设您的条码扫描代码在viewDidLoad 上运行。你应该把它移到viewDidAppear

【讨论】:

以上是关于在当前动画完成之前开始dismissViewControllerAnimated的主要内容,如果未能解决你的问题,请参考以下文章

pageviewcontroller 动画完成后更新当前页码

JS实现动画的四条优化方法

拖动时为 UIView 设置动画

[layer removeAllAnimations] 调用时如何让动画视图停留在当前位置

在动画完成之前调用 UIView 动画完成

vue3动画transition标签使用