iOS 7中的RemoteControlReceivedWithEvent问题

4

我很难弄清楚为什么在iOS 7中遥控器不起作用。在iOS 7中,无论是在锁定屏幕还是在控制中心中,按钮都无响应,有趣的是,在iOS 6上它运行良好。

这是我使用的代码:

- (void)remoteControlReceivedWithEvent:(UIEvent *)receivedEvent {

if (receivedEvent.type == UIEventTypeRemoteControl) {

    switch (receivedEvent.subtype) {

        case UIEventSubtypeRemoteControlTogglePlayPause:
             if (player.playbackState == MPMusicPlaybackStatePlaying) {

                 [player pause];
             }
             else {
                 [player play];
             }
            break;
        case UIEventSubtypeRemoteControlPreviousTrack:
            break;

        case UIEventSubtypeRemoteControlNextTrack:
            break;

        default:
            break;
    }
}}

这是我找到的关于如何执行此操作的信息来源: https://developer.apple.com/library/ios/documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/Remote-ControlEvents/Remote-ControlEvents.html 有任何想法为什么会这样发生吗?在iOS 6上可以工作但不在iOS 7上。
谢谢。
2个回答

9
我遇到了同样的问题,最终我删除了案例声明 UIEventSubtypeRemoteControlTogglePlayPause 并分别添加了案例声明 UIEventSubtypeRemoteControlPlayUIEventSubtypeRemoteControlPause。我没有一个很好的解释为什么会这样改变。
*更新*
我发现当用户使用耳机控制播放器时,会调用 UIEventSubtypeRemoteControlTogglePlayPause。只是提供一下信息。

完美!正如我想要的那样工作!谢谢。 - Michael Ortiz
干得好,你刚刚节省了我的时间。 - David

0

我认为这是一个更好的解决方案:

case UIEventSubtypeRemoteControlTogglePlayPause:
case UIEventSubtypeRemoteControlPlay:
case UIEventSubtypeRemoteControlPause:
   if (_paused) {
      [self play:self];
   } else {
      [self pause:self];
   }
   break;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接