iOS 7中的RemoteControlReceivedWithEvent问题

时间:2013-10-01 20:13:04

标签: iphone objective-c ios6 ios7

我很难弄清楚为什么在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 个答案:

答案 0 :(得分:9)

我遇到了同样的问题,我最终删除了案例陈述 UIEventSubtypeRemoteControlTogglePlayPause ,并分别添加了案例陈述 UIEventSubtypeRemoteControlPlay UIEventSubtypeRemoteControlPause 。我没有很好的解释为什么这会改变。

* UPDATE *

我发现当用户使用耳机控制播放器时会调用 UIEventSubtypeRemoteControlTogglePlayPause 。只是一个FYI。

答案 1 :(得分:0)

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

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