我想在我的app裏開發後臺播放的功能,所以我在播放器的viewController裏寫了系統遠端事件:
-(BOOL)canBecomeFirstResponder{
return YES;
}
#pragma mark - 接收到遠程控制時執行的方法
- (void) remoteControlReceivedWithEvent: (UIEvent *) receivedEvent{
PlayerViewController *play = [PlayerViewController sharedManager];
if (receivedEvent.type == UIEventTypeRemoteControl) {
switch (receivedEvent.subtype) { // 得到事件類型
case UIEventSubtypeRemoteControlTogglePlayPause: // 暫停 ios6
[play _actionPlayPause:nil];
[self updateState];// 調用你所在項目的暫停按鈕的響應方法 下面的也是如此
break;
case UIEventSubtypeRemoteControlPreviousTrack: // 上一首
[play _actionLast:nil];
break;
case UIEventSubtypeRemoteControlNextTrack: // 下一首
[play _actionNext:nil];
break;
case UIEventSubtypeRemoteControlPlay: //播放
[play _actionPlayPause:nil];
[play setNowPlayingInfo];
[self updateState];
break;
case UIEventSubtypeRemoteControlPause: // 暫停 ios7
[play _actionPlayPause:nil];
[self updateState];
break;
default:
break;
}
}
}
這時候當我切換界面或者退出後臺的時候遠程控制就失效了,發現remoteControlReceivedWithEvent不在調用,此時懷疑係統捕獲不到遠端事件
解決方法:
將接收遠程控制的方法,也就是上述代碼寫在跟控制器裏,我的根控制器是UITabbarViewController