1

アプリケーションに 2 つの ViewController があります。

ViewController1 は音声を再生し、ViewController2 はテキストを表示します。

ViewController2 を使用しているときに、リモート コントロールを使用してオーディオを制御したいと考えています。たとえば、ユーザーが ViewController2 にいて、オーディオを停止したいとします。

私のコード:

ViewController1.m は完璧に動作します

- (void)remoteControlReceivedWithEvent:(UIEvent *)receivedEvent
{
    MARK;
    if (receivedEvent.type == UIEventTypeRemoteControl) {

        switch (receivedEvent.subtype) {

            case UIEventSubtypeRemoteControlTogglePlayPause:
                DLog(@"remotecontrol_toggle");
                [self togglePlayPause];
                break;

            case UIEventSubtypeRemoteControlPause:
                DLog(@"remotecontrol_pause");
                [self pause];
                break;

            case UIEventSubtypeRemoteControlPlay:
                DLog(@"remotecontrol_play");
                [self play];
                break;

            case UIEventSubtypeRemoteControlStop:
                DLog(@"remotecontrol_stop");
                [self stop];
                break;

            default:
                break;
        }
    }
}

私の質問は、これをすべてまとめる最良の方法は何ですか? ViewController2 でイベントを処理する必要がありますか?

私は AppDelegate.m でこれを行うことができることを知っています:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    MARK;
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
}

- (void)applicationWillTerminate:(UIApplication *)application
{
    MARK;
    [[UIApplication sharedApplication] endReceivingRemoteControlEvents];
}

このように、私のアプリケーションはすべてのビューでリモコンを制御しますが、受信したイベントが ViewController2 で処理されないため、問題は解決しません。

しかし、AppDelegate.m で受信したイベントを処理できないので、すべての ViewController でイベントを処理する必要がありますか?

私は iOS 開発が初めてで、ここで考えているかどうかわかりません。

どんな助けでも大歓迎です。

4

3 に答える 3

1

最も簡単な方法は、UIApplication をサブクラス化し、そこでイベントを処理することです。

于 2014-01-09T11:22:52.410 に答える