【问题标题】:remoteControlReceivedWithEvent Never calledremoteControlReceivedWithEvent 从未调用过
【发布时间】:2012-11-17 04:07:03
【问题描述】:

我正在尝试让遥控器或耳塞在应用处于后台或屏幕锁定时播放和暂停音频。所以在 viewDidLoad 我有:

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];

然后我有:

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



if (receivedEvent.type == UIEventTypeRemoteControl) {



switch (receivedEvent.subtype) {



    case UIEventSubtypeRemoteControlTogglePlayPause:

        [self playOrStop];

        break;



    case UIEventSubtypeRemoteControlPreviousTrack:


        break;



    case UIEventSubtypeRemoteControlNextTrack:


        break;



    default:

        break;

}

}


}

但是,它永远不会被调用。开启后台运行,在AppDelegate中设置AVSession。我很茫然。

【问题讨论】:

  • 您找到解决方案了吗?
  • 从来没有发现任何东西。我有时可以让它停止它,但每次挂断电话后它都会重新启动。很烦人。
  • 我不知道您的问题的答案,但如果您的目标是 iOS 7.1+,另一种方法是使用较新的 MPRemoteCommandCenter APIs

标签: iphone ios xcode audio-streaming avplayer


【解决方案1】:

您可能还需要添加:

- (BOOL)canBecomeFirstResponder {
    return YES;
}

UIResponder 的任何子类都需要实现这一点,否则它不会接受第一响应者状态。

【讨论】:

  • 我很确定它确实有效,因为那是我开始使用遥控器的操作系统版本。
【解决方案2】:

试试看

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];

在 viewWillAppear:(BOOL) 动画而不是 viewDidLoad。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-14
    • 2011-10-09
    • 2014-11-23
    • 2017-08-27
    • 2012-08-09
    • 2013-09-04
    • 2011-05-13
    • 2019-06-01
    相关资源
    最近更新 更多