我有一个具有以下设置的应用程序:
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永远不会被调用。我一直无法重现这一点。
关于在回放期间调试此问题的任何建议或想法都会很棒,因为我无法始终如一地重现此问题。谢谢!
答案 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];
}