MPRemoteCommandCenter事件处理程序从不触发

时间:2015-05-20 04:08:14

标签: ios iphone audio mpmusicplayercontroller remote-control

我正在制作一款处理音乐播放的iPhone音乐应用程序。暂停并维护自己的播放列表。我试图让播放/暂停遥控功能(在耳塞和上滑屏幕上)适用于我的应用中的音乐播放。

这里是我在与音乐播放器相关的初始化方法中放入的代码(这是MPMusicPlayerController的一个实例,我确信通过调试调用了这个代码块),I&#39 ;谈谈我在代码后面临的问题:

[self.musicController beginGeneratingPlaybackNotifications];

// listen to remote control events
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];    

if ([self canBecomeFirstResponder]) {
    NSLog(@"Can be first responder");
    [self becomeFirstResponder];
    NSLog([NSString stringWithFormat: @"is first responder now? %@", [self isFirstResponder] ? @"yes" : @"no"]);
} else {
    NSLog(@"Cannot be first responder");
}

MPRemoteCommandCenter *commandCenter = [MPRemoteCommandCenter sharedCommandCenter];

[commandCenter.togglePlayPauseCommand addTargetWithHandler:^MPRemoteCommandHandlerStatus(MPRemoteCommandEvent *event) {
    NSLog(@"TK: toggle command");
    return nil;
}];

[commandCenter.playCommand addTargetWithHandler:^MPRemoteCommandHandlerStatus(MPRemoteCommandEvent *event) {
    NSLog(@"TK: play command");
    return nil;
}];

[commandCenter.pauseCommand addTargetWithHandler:^MPRemoteCommandHandlerStatus(MPRemoteCommandEvent *event) {
    NSLog(@"TK: pause command");
    return nil;
}];

我的问题:添加上面的代码后,当我在我的应用程序中播放音乐时按下上滑屏幕上的播放/暂停按钮时,日志中没有显示调试消息,这意味着事件处理程序块不是&# 39; t触发。

当我在我的应用程序中播放音乐时,当我按下苹果耳塞上的播放/暂停按钮时,系统开始在我的iOS音乐库中播放随机音乐,并且它播放的歌曲不会出现在我的应用的播放列表中,这意味着除了通过上述步骤之外,没有合法的方式从我的应用播放此歌曲。

注意:日志的输出为"不能是第一响应者"。

1 个答案:

答案 0 :(得分:0)

您应该启用视图(视图控制器)成为第一响应者

operator!