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];
}
}