我有一个应用程序在 iOS 4.3.3 上运行良好。但是我发现在iOS 5上存在一些问题。这个应用程序通过avaudioplayer播放mp3文件,并且遥控器在iOS 5上无法正常工作。
这个 App 中有四个视图控制器。为了实现远程控制的功能,我在每个视图控制器上添加了以下代码。问题是,当视图控制器第一次打开时。遥控器按钮效果很好,即使应用程序在后台运行或锁定屏幕。但是当我单击另一个视图控制器并返回上一个视图时,遥控器不再工作了。但是每次都会调用 canBecomeFirstResponder 函数。
我什至尝试把 [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 在委托函数 (BOOL)application:(UIApplication *)application 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];
}
}