2

MPMoviePlayerViewControlleriPad 上处于全屏模式时,它的控件默认设置为在覆盖层上有一个上一个和下一个按钮。在我的项目中,我需要捕获该覆盖按钮的点击并相应地处理它。因为我不确定如何调用播放列表,所以没有下一个项目,一旦我退出全屏模式,单击按钮会破坏视图。不知何故,它只是不知道该怎么做,我没有得到任何错误。

我想知道的是是否有办法从fullscreen下一个和上一个按钮监听/捕获该事件?

我还尝试使用我自己的控件进行覆盖以在MPMoviePlayer,MPMoviePlayerController和 theMPMoviePlayerViewController上运行,但没有成功。一旦玩家进入fullscreen模式,任何存在的叠加层都会被忽略,并且不会随着屏幕缩放而进行。

有没有一种可靠的方法可以在fullscreen模式下进行叠加?我查看了来自 Apple 的示例,但这似乎不适用于我在fullscreen模式下实际向视图添加任何内容。

任何帮助,将不胜感激。

4

3 回答 3

8

我没有使用过 MPMoviePlayerViewController,但是这里有一些基于偷看文档的想法。

看起来 MPMoviePlayerController 有一些可能相关的通知,尽管我没有看到对“下一个和上一个按钮”的具体引用。它们可能是“搜索”按钮吗?

注册通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerPlaybackStateChanged:) name:MPMoviePlayerPlaybackStateDidChangeNotification object:nil];

并将此函数添加到您的对象中:

-(void)moviePlayerPlaybackStateChanged:(NSNotification *)notification {
    MPMoviePlayerController *moviePlayer = notification.object;
    MPMoviePlaybackState playbackState = moviePlayer.playbackState;
    // ...
}

我怀疑您会发现您正在获得这些按钮的 MPMoviePlaybackStateSeekingForward 和 ...SeekingBackward 更新。

于 2010-08-02T18:12:48.687 回答
2

这是我刚刚偶然发现的另一种可能性。全屏模式下的 MPMoviePlayerController 可能正在发送远程控制事件。通过在视图控制器中启用远程控制事件消息来捕获这些(顺便说一句,仅限 iOS 4):

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];

然后实施

[UIResponder remoteControlReceivedWithEvent:(UIEvent*)event];

当视图消失时,在 viewWillDisappear 中取消注册:

[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
[self resignFirstResponder];

我不确定这会奏效,但值得一试。

于 2010-08-04T21:04:08.067 回答
0

Seaamsu Campbell 是对的 :) 使用他的方法我得到了播放控制事件的事件。请参阅我的问题和答案。

我怎么知道用户点击了 iPhone 播放控件上的快进和快退按钮

于 2010-08-30T07:00:18.693 回答