remoteControlReceivedWithEvent не вызывается в приложении с несколькими контроллерами представления

У меня приложение хорошо работает на iOS 4.3.3. Но я обнаружил, что в iOS 5 есть некоторые проблемы. Это приложение воспроизводит mp3-файлы с помощью avaudioplayer, а пульт дистанционного управления не работает на iOS 5.

В этом приложении есть четыре вида контроллеров. Я добавляю следующие коды на каждый контроллер вида, чтобы реализовать функцию дистанционного управления. Проблема в том, когда контроллер вида открывается впервые. Кнопка дистанционного управления работает хорошо, даже приложение работает в фоновом режиме или блокирует экран. Но когда я нажимаю другой контроллер вида и возвращаюсь к предыдущему, пульт дистанционного управления больше не работает. Но функция canBecomeFirstResponder вызывалась каждый раз.

Я даже пытаюсь поставить [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; в приложении функции делегата (BOOL):(UIApplication *) приложение didFinishLaunchingWithOptions:(NSDictionary *)launchOptions Это не работает.

Я не понимаю, почему это происходит. Это мучило меня в течение нескольких дней. Есть ли лучший способ реализовать функцию дистанционного управления в нескольких контроллерах представления?

Кстати, я добавил аудио ключ UIBackgroundModes в info.plist. И это приложение хорошо работает в фоновом режиме.

Любая помощь будет оценена.

- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
}
- (void)viewWillAppear:(BOOL)animated {
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
}  
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
[self resignFirstResponder];
}
- (BOOL) canBecomeFirstResponder {
NSLog(@"Can be first responder!");
return YES;
}
- (void)remoteControlReceivedWithEvent:(UIEvent *)event
{
if (event.subtype == UIEventSubtypeRemoteControlTogglePlayPause) {
    NSLog(@"UIEventSubtypeRemoteControlTogglePlayPause");
    [self playAndpause:nil];
}
}

0 ответов

Другие вопросы по тегам