MPMoviePlayerViewController锁屏播放控件不起作用

时间:2012-11-14 20:48:58

标签: ios objective-c mpmovieplayercontroller playback

我有一个具有以下设置的应用程序:

URMoviePlayerViewController扩展MPMoviePlayerViewController

  • 实现了remoteControlReceivedWithEvent:(UIEvent *)事件的方法,以及:

    (void)viewDidLoad
    {
        [super viewDidLoad];    
        [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
        [self becomeFirstResponder];
    }
    
    (BOOL) canBecomeFirstResponder
    {
        return YES;
    }
    

URPlayerViewController将URMoviePlayerViewController作为属性

    @property (nonatomic, strong) URMoviePlayerViewController *player;
  • 播放播放音频剪辑的播放器时初始化播放器;如果它已经初始化,则不会重新初始化播放器

  • URPlayerViewController有一个视图,它是一个自定义播放器,具有播放/暂停,下一个/上一个控件,已初始化并添加到viewDidLoad方法的子视图中

URAppDelegate将URPlayerViewController作为属性

    @property (nonatomic, strong) URPlayerViewController *playerViewController;
  • 在应用程序中初始化playerViewController didFinishLaunchingWithOptions

  • 将playerViewController的视图添加到窗口 - 以便在整个应用程序中显示自定义播放器

问题:

一切通常都很有效。在锁定屏幕上不时地播放控件(播放/暂停/下一个/上一个)停止工作。 remoteControlReceivedWithEvent永远不会被调用。我一直无法重现这一点。

关于在回放期间调试此问题的任何建议或想法都会很棒,因为我无法始终如一地重现此问题。谢谢!

1 个答案:

答案 0 :(得分:1)

我认为您缺少以下方法,只需将其添加到现有代码中即可接受答案:

从viewdidload中删除beginReceivingRemoteControlEvents并将其放入viewdidAppear:

- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];

}

- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
[self resignFirstResponder];

}