在 MPMoviePlayerController 中进入全屏调用 viewWillDisappear 和 viewDidDisappear

Posted

技术标签:

【中文标题】在 MPMoviePlayerController 中进入全屏调用 viewWillDisappear 和 viewDidDisappear【英文标题】:Entering full screen in MPMoviePlayerController calls viewWillDisappear and viewDidDisappear 【发布时间】:2012-09-26 15:07:49 【问题描述】:

为了在我的应用中播放视频,我设置了MPMoviePlayerController 并将其添加到子视图中。用户可以使用捏合手势切换到全屏模式。

在这个viewController(包含电影播放器​​视图)中,我将viewWillDisappear 设置为nil。

但是,在 ios 6 中,当激活全屏模式时,包含电影播放器​​视图的视图控制器中的 MPMoviePlayerController 调用方法 viewWillDisappearviewDidDisappear

在 iOS5 中,这些方法没有被调用。

【问题讨论】:

看看这个解决方案,看看它是否适用于您的问题。 ***.com/a/15440274/1437106 【参考方案1】:

我也遇到过这个问题,这让我很头疼。在修复错误之前,我的临时解决方案是检查玩家在viewWillDisappear: 和/或viewDidDisappear: 中的fullscreen 布尔值。如果它返回YES,则电影正在进入全屏模式,您应该避免做任何可能打断它的事情。

【讨论】:

viewWillDisappear 方法也被所有超级视图调用。如果您有一个主控制器生成另一个包含 MPMoviePlayerController 的控制器,则当 viewWillDisappear 被调用时,它会一直向上运行。是否也有中断链的解决方法? 我想您可以根据fullscreen 的值是真还是假来尝试跳过对[super viewWillDisappear:] 的调用。但根据您的代码,这可能会导致比修复更多的问题。【参考方案2】:

对于大家已​​经注意到并对此有疑问,我在社区 Open Radar 中找到了这份报告:http://openradar.appspot.com/12327997

【讨论】:

【参考方案3】:

我不确定这是一个问题,但如果有人对本文所述的问题有疑问,即有人使用 viewController(包含电影播放器​​视图),我找到了解决方案:

我将视图控制器与电影播放器​​控制器一起使用,然后将此视图控制器呈现为子视图。我刚刚摆脱它并直接使用 MoviePlayer.view 作为子视图,它工作得很好。

iOS 5 不是问题,但现在是。修复它并享受吧!

【讨论】:

以上是关于在 MPMoviePlayerController 中进入全屏调用 viewWillDisappear 和 viewDidDisappear的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MPMoviePlayerController 上处理多个 SRT 文件

在 MPMoviePlayerController 上执行捏合手势时屏幕黑屏

在 UITableViewCell 中嵌入 MPMoviePlayerController

MPMoviePlayerController 在影片结尾更改控件样式

后台的 MPMoviePlayerController / AVAudioSession 在来电后不会重新开始播放

MPMoviePlayerController 在启动前显示空白屏幕?