关闭模态视图控制器会导致音乐停止
Posted
技术标签:
【中文标题】关闭模态视图控制器会导致音乐停止【英文标题】:dismissing modal view controller causes music to stop 【发布时间】:2012-08-29 13:32:01 【问题描述】:我正在创建一个需要一直播放背景音乐的应用程序。在应用程序启动时,我开始播放音乐,一切都很好,直到我关闭模态视图控制器(我这样做是为了返回应用程序的主屏幕)。此时,音乐突然停止,当我尝试调整音量时,它实际上是“铃声”.... 5-10 秒后它又回到“音量”,我可以再次启动音乐。
有人遇到过这个问题吗?我很难确定问题的根源......
编辑: 这就是我开始播放音乐的方式(theData 是我的共享数据对象)
NSString *musicPath = [[NSBundle mainBundle] pathForResource:@"bg" ofType:@"mp3"];
theData.backgroundMusicPlayer =[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:musicPath] error:nil];
theData.backgroundMusicPlayer.delegate = self;
[theData.backgroundMusicPlayer prepareToPlay];
[theData.backgroundMusicPlayer play];
theData.backgroundMusicPlayer.numberOfLoops = -1;
在应用程序中,我有两个场景:我执行从场景 1 到场景 2 的转场,然后返回我使用以下代码:
[self dismissModalViewControllerAnimated:NO];
[theScene removeSubviews];
removeSubviews 方法:
[fbInfoView removeFromSuperview];
[logoView removeFromSuperview];
self.captureSession=nil; // ending AVCaptureSession
【问题讨论】:
如果您能更好地描绘应用程序的结构,将会很有帮助。代码也不错。 你能贴出你开始播放音乐的代码吗? 我编辑了最初的帖子以提供更多细节。 【参考方案1】:目前还不清楚如何创建和设置theData
,但我建议您为此目的使用单例对象。像这样的:
@interface MySingleton : NSObject
+(MySingleton*)sharedHelper;
-(void)playMusic;
@end
实现:
@implementation MySingleton
static MySingleton* _sharedMySingleton = nil;
+(MySingleton*)sharedHelper
if (!_sharedMySingleton)
[[self alloc] init];
return _sharedMySingleton;
return nil;
+(id)alloc
NSAssert(_sharedMySingleton == nil, @"Attempted to allocate a second instance of a singleton.");
_sharedMySingleton = [super alloc];
return _sharedMySingleton;
return nil;
-(id)init
self = [super init];
if (self != nil)
// initialize stuff here
return self;
-(void)playMusic
// your code
@end
然后这样称呼它:
[[MySingleton sharedHelper] playMusic];
【讨论】:
感谢您的回复。我很确定问题与 theData 无关。实际上,如果我什至不初始化并启动音乐,则在关闭模态 VC 后音量会响起......以上是关于关闭模态视图控制器会导致音乐停止的主要内容,如果未能解决你的问题,请参考以下文章
iOS - 目前的模态视图控制器会导致一些动画伪影(iPhone)