当一个UIViewController被推走时即使他在内存里保留。。也不能注册成功为第一相映者。。如果想要程序在后台时也接收到系统远端的控制(耳机&iphone最下面默认的播放暂停信号)。。那就需要在工程的基类里覆盖下面的三个函数。

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [self becomeFirstResponder];
}

 

- (void) remoteControlReceivedWithEvent: (UIEvent *) receivedEvent {
   
    if (receivedEvent.type == UIEventTypeRemoteControl) {
        switch (receivedEvent.subtype) {
            case UIEventSubtypeRemoteControlTogglePlayPause:
            {
                [[DMPlayerViewController sharedPubPlayerElement] msg_action_play: nil];
                //NSLog(@"UIEventSubtypeRemoteControlTogglePlayPause");
            }
                break;
            case UIEventSubtypeRemoteControlPreviousTrack:
            {
                [[DMPlayerViewController sharedPubPlayerElement] msg_action_prev: nil];
                //NSLog(@"UIEventSubtypeRemoteControlPreviousTrack");
            }
                break;
            case UIEventSubtypeRemoteControlNextTrack:
            {
                [[DMPlayerViewController sharedPubPlayerElement] msg_action_next: nil];
                //NSLog(@"UIEventSubtypeRemoteControlNextTrack");
            }
                break;
            default:
                break;
        }
    }
}
-(BOOL)canBecomeFirstResponder{
    return  YES;
}