如何在iPad上以全屏模式捕捉MPMoviePlayer下一次按钮点击事件?

时间:2010-08-02 01:15:53

标签: objective-c xcode ipad mpmovieplayercontroller mpmovieplayer

MPMoviePlayerViewController在iPad上处于全屏模式时,默认情况下,其控件在叠加层上有上一个和下一个按钮。在我的项目中,我需要捕获该叠加按钮的单击并相应地处理它。由于我还不确定如何调用播放列表,因此没有下一个项目,单击该按钮会在退出全屏模式后中断视图。不知怎的,它只是不知道该做什么,我没有错误。

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

我还尝试使用自己的控件覆盖,以MPMoviePlayerMPMoviePlayerControllerMPMoviePlayerViewController生效,但没有成功。一旦玩家进入fullscreen模式,任何存在的叠加都将被忽略,并且不随屏幕缩放一起进行。

fullscreen模式下是否有可靠的方法来覆盖?我查看了Apple的示例,但这似乎对我在fullscreen模式下向视图添加任何内容无效。

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:8)

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

看起来MPMoviePlayerController有一些可能相关的通知,但我没有看到对“next and previous”的具体引用。他们可能会寻找按钮吗?

使用

注册通知
[[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更新。

答案 1 :(得分:2)

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

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

然后实施

[UIResponder remoteControlReceivedWithEvent:(UIEvent*)event];

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

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

我不确定这会起作用,但值得一试。

答案 2 :(得分:0)

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

How can I know users click fast forward and fast rewind buttons on the playback controls in iPhone