iPad SDK:如何挂钩 MPMoviePlayerViewController 的完成按钮?

Posted

技术标签:

【中文标题】iPad SDK:如何挂钩 MPMoviePlayerViewController 的完成按钮?【英文标题】:iPad SDK: How to hook into done button of MPMoviePlayerViewController? 【发布时间】:2010-07-24 20:11:54 【问题描述】:

我正在创建一个 iPad 添加并且我正在使用 MPMoviePlayerViewController 来播放视频。

视频就这样占据了整个 iPad 屏幕。

playerViewController.view.frame = self.view.frame;

我需要一种方法让用户能够按下按钮转到不同的屏幕。

我注意到当我创建 MPMoviePlayerViewController 时,导航控制器中会自动出现一个完成按钮。

我的问题:

a.) 是否有任何方法可以连接到现有的完成按钮?基本上我只想关闭视图控制器。

b.) 如果那行不通。如何添加自己的自定义按钮?正如我上面提到的,MPMoviePlayerViewController 占据了整个屏幕。我的一个想法是在框架中创建 MPMoviePlayerViewController 并留出一点垂直空间,以便我可以添加自己的工具栏。

我更喜欢关于如何实施 a.) 的建议?

如果这是不可能的,也许有一些关于如何通过按下按钮来关闭 MPMoviePlayerViewController 的建议?

感谢所有帮助。

【问题讨论】:

请查看我的回复:***.com/a/29516352/1728118 【参考方案1】:

来自文档:

“完成”按钮会在播放器退出全屏模式时暂停电影播放。如果您想在代码中检测到这种情况,您应该监控其他通知,例如MPMoviePlayerDidExitFullscreenNotification

因此,请尝试观察此通知:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(moviePlayerDidExitFullscreen:)
                                             name:MPMoviePlayerDidExitFullscreenNotification
                                           object:nil];

后来:

- (void)moviePlayerDidExitFullscreen:(NSNotification *)theNotification 
    // do whatever you need to...


编辑:我想我误读了你的问题。你要的是方法-dismissMoviePlayerViewControllerAnimated

我假设您使用-presentMoviePlayerViewControllerAnimated: 来展示它?您可以使用moviePlayer.navigationItem.rightBarButtonItem(或向左,或其他)添加一个按钮。将此按钮的目标设置为您的视图控制器,并拦截该操作以调用 -dismiss..

【讨论】:

我真的只需要一种方法来允许用户关闭 ViewController。其实我只想:[selfdismissModalViewControllerAnimated:YES];我尝试注册 MPMoviePlayerDidExitFullscreenNotification ,它工作正常,但没有达到预期的效果。想法? 我尝试添加一个按钮,然后分配给 mp.navigationitem.rightBarButtonItem 但它没有出现。有没有人有这个工作的例子? 有人找到解决方案了吗?到处都在谷歌搜索...我如何才能听到模态视图因扩展控制器和覆盖 dissmiss 方法而被关闭? 当控件样式设置为 MPMovieControlStyleFullscreen 时,完成按钮不会触发 MPMoviePlayerDidExitFullscreenNotification 通知。 @MaxMacLeod 当控制样式设置为 MPMovieControlStyleFullscreen 时,我们可以得到通知点击完成按钮的任何方式【参考方案2】:

您好,可以使用 jbandes 所说的来完成

[[NSNotificationCenter defaultCenter] addObserver:self selector: @selector(playbackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:theMoviePlayer.moviePlayer];

【讨论】:

当电影完成播放而无需按下完成按钮时也会调用它 @Max MacLeod 用户 presentMoviePlayerViewControllerAnimated 然后将引发 MPMoviePlayerDidExitFullscreenNotification。 太棒了!当按下完成按钮时,这也适用于MPMoviePlayerViewControllerMPMoviePlayerWillExitFullscreenNotification 没有在那里开火。

以上是关于iPad SDK:如何挂钩 MPMoviePlayerViewController 的完成按钮?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iPad1 iOS SDK 上以编程方式保存视频

iPhone SDK:如何使3hg应用程序iPad兼容?

iPhone SDK:如何使 3hg 应用程序与 iPad 兼容?

如何使用 iphone sdk 在 ipAd 控制器中发布我们自己的 iphone 应用程序广告?

为啥 iOS 5.1 SDK 的 iPad 模拟器中没有“主页”按钮?

iOS (iPhone/iPad) SDK - 应用程序不改变方向