In my parent view controller I have this:
- (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];
}
In any child view controller that I want to handle remote control events I do this:
- (void) remoteControlReceivedWithEvent: (UIEvent *) receivedEvent {
if (receivedEvent.type == UIEventTypeRemoteControl) {
switch (receivedEvent.subtype) {
case UIEventSubtypeRemoteControlTogglePlayPause:
{
//do something
break;
}
default:
break;
}
}
}
The problem is that the events are received in one of the child classes but not the other, even though they are very similar. They are presented the same way. Neither of them override viewDidAppear so they should both become first responder when they appear and receive remote control events.
So my question is, what could be making the one view controller lose first responder status?
EDIT: Some debugging logs show that the view controller actually is the first responder. But for some reason it's not receiving the events.