5

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

URMoviePlayerViewController 扩展 MPMoviePlayerViewController

  • 实现了 remoteControlReceivedWithEvent:(UIEvent *)event 方法,以及:

    (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 永远不会被调用。我无法始终如一地重现这一点。

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

4

1 回答 1

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];

}

于 2012-11-19T11:52:58.240 回答