RemoteControlReceivedWithEventが呼ばれない時

- (void)remoteControlReceivedWithEvent:(UIEvent *)event

これをオーバーライドするだけだと、リモートコントロールのイベントを受け取れないんですね。
以前にリモートコントロールの処理を書いた時には、特別なことを記憶がないのですが・・。
謎は残りつつも、動いたコードをメモしておきます。

イベントを受け取れるようにするには

リモートコントロールのイベントを受け取りたいオブジェクトに、以下を追加します。

私はカスタムUIViewに書いていますが、動きました。
(一般的にはUIViewControllerに書くことが多いかと思います)

1. beginReceivingRemoteControlEvents

UIViewControllerの場合は、viewDidLoadなどに書きます。
(私はUIViewなのでawakeFromNibに書きました)

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

2. canBecomeFirstResponder

オーバーライドします。

- (BOOL)canBecomeFirstResponder {
    return YES;
}

この2つで、remoteControlReceivedWithEventが呼ばれるようになりました。

参考