0

私の親View Controllerにはこれがあります:

- (BOOL)canBecomeFirstResponder
{
    return YES;
}

- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
NSLog(@"BECOMING FIRST RESPONDER");
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
}


- (void) viewWillDisappear:(BOOL)animated {

[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
[self resignFirstResponder];
[super viewWillDisappear:animated];

}

リモートコントロールイベントを処理したい子View Controllerで、これを行います:

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

if (receivedEvent.type == UIEventTypeRemoteControl) {
    switch (receivedEvent.subtype) {

        case UIEventSubtypeRemoteControlTogglePlayPause:
        {
            //do something
            break;
        }

        default:
            break;
    }
}

}

問題は、子クラスの 1 つでイベントが受信され、他の子クラスでは非常に似ているにもかかわらず、イベントが受信されないことです。それらは同じ方法で提示されます。どちらも viewDidAppear をオーバーライドしないため、表示されてリモート コントロール イベントを受信すると、どちらもファーストレスポンダーになる必要があります。

私の質問は、1 つのビュー コントローラーがファーストレスポンダーのステータスを失った原因は何ですか?

編集: 一部のデバッグ ログは、View Controller が実際にはファーストレスポンダであることを示しています。しかし、何らかの理由でイベントを受信して​​いません。

4

1 に答える 1

-2

次のことを試してください。

[self resignFirstResponder];
于 2012-11-09T13:48:06.933 に答える