全屏 Youtube 视频后开始/结束外观转换的不平衡调用

Posted

技术标签:

【中文标题】全屏 Youtube 视频后开始/结束外观转换的不平衡调用【英文标题】:Unbalanced calls to begin/end appearance transitions after Fullscreen Youtube Video 【发布时间】:2013-10-21 16:19:48 【问题描述】:

我正在努力解决这个问题:

情况:

我有一个非常基本的应用程序,一个 MMDrawerController 里面有一个 tableview,当一个项目被按下时它链接到一个 uitabbarcontroller。在第一页里面是一个嵌入的 youtube UIWebView,当按下它时会播放一个 youtube 视频全屏

这就是正在发生的事情。

    按视频,全屏打开并开始播放 UITabBar viewWillDisappear 触发 根 MMDrawerController viewWillAppear 触发 视频结束 用户回到他们开始的 UITabBar 并且一切似乎都很好即使它之前“消失”了

现在我将布尔值放在两个视图的 ViewWillAppears / Disappears 中,以检查应用程序的当前状态。通常它是 0,1 表示表已打开或 uitabbar 控制器已打开。视频结束后,他们显示 0,0。如果我按回导航键,我会在从任何位置导航时收到“开始/结束外观转换的不平衡调用”。

现在如果我听 youtube 视频的开头然后开火:

[self.navigationController popToRootViewControllerAnimated:NO];

我可以防止发生不平衡的呼叫,并且用户可以继续浏览应用程序。然而,他们无法观看视频,他们只是被退回了一个视图。

在 3 中也是如此。我可以在两个控制器上检查 0、0,然后几乎重新启动整个应用程序。但这不是一个好的解决方案。

预期结果:

用户可以按下uiwebview,观看视频,然后返回到上次中断的地方。如果他们回击导航控制器,则不会出现不平衡的外观过渡。


我尝试了很多东西,比如

[self.navigationController poptoViewController:...]


从我此时收集的信息来看,它与在根控制器中加载的全屏视频有关(因此它的 viewWillAppear 在 3 时触发。)但之后我没有正确“放置”回来。类似的东西

[self.navigationController heyTheUserIsPresentlyIn:self]

我可以在视频消失后打电话给我非常好

非常感谢任何帮助,尽管我已经为此工作了好几个小时,如果我是个白痴,任何指向书籍中文档或章节的链接都会有很大帮助。谢谢。

【问题讨论】:

【参考方案1】:

听起来像ViewController 生命周期问题。

您确定要从 UITableView 导航到 UITabBarController 吗?尝试删除后者,因为它通常是根 ViewController,并且可以基于此假设调用 viewWillDisappearviewWillAppear

如果您需要一个不是根ViewController 的选项卡式控件,也许可以考虑滚动您自己的控件?

【讨论】:

【参考方案2】:

这发生在一系列导航动画或动画开始时没有正确结束第一个动画,所以我猜你的动画也是如此,请注意你的动画,即使它不是由于导航控制器。 希望对你有帮助

【讨论】:

所以这个问题完全是因为动画搞砸了?如果我杀死应用程序中的每个过渡动画来解决问题? 确定在我的情况下我以同样的方式解决了,试一试,然后让我知道。如果您在第一个动画结束之前呈现连续的视图控制器动画,还要注意导航控制器动画。 不,这没有任何作用。也没有在***.com/questions/8563473/…这里实现与延迟解决方案相结合的实现,为了澄清,该应用程序功能完美直到我从 UIWebView 观看全屏视频,然后它坏了。 无论如何这是动画问题,你必须以某种适当的方式解决这个问题,正如我所说的,在第一个动画结束后开始下一个动画。 我明白你在说什么,但是我已经关闭了动画,这并不能解决问题。我知道这个错误也可能发生在同时调用的两个视图控制器上,考虑到 viewWillDisappear 在同一个视图控制器上被调用两次,而没有中间的 viewWillAppear,这可能是有意义的。但是,这并没有解决根本问题,即这个全屏视频正在发生什么,从那时起改变了应用程序中的所有内容。

以上是关于全屏 Youtube 视频后开始/结束外观转换的不平衡调用的主要内容,如果未能解决你的问题,请参考以下文章

对 ParentViewController 的开始/结束外观转换的不平衡调用

CKPresentationControllerRootViewController 开始/结束外观转换的不平衡调用

开始/结束外观转换的不平衡调用...- UIViewController 包含

开始/结束外观转换的不平衡呼叫

UISplitViewController 中对开始/结束外观转换的不平衡调用

开始/结束外观转换的不平衡调用