我正在使用Apple的Page Control example。我希望能够水平滚动到某个页面,并在查看该页面时自动播放声音?然后在查看其他页面时声音会停止吗?
所以,例如。在第1页,我有一些文本。当我转到第2页的下一页时,我希望声音自动播放并在我转到第3页时停止。
我打算使用If语句(因为它不是那么多页面)来确定哪个页面会获得声音。
我的问题很简单。在查看某个页面时,如何自动播放声音? 顺便说一句,我打算使用System Sound。
我知道如何使用按钮播放声音。但是你如何自动获得它 - 当某个页面出现时开始并在移动到下一页时停止。
提前谢谢!
编辑:
我在ViewDidLoad中输入了这段代码,但声音在到达预定页面之前就播放得更早了:
// Set the label and background color when the view has finished loading.
- (void)viewDidLoad {
pageNumberLabel.text = [NSString stringWithFormat:@"Page %d", pageNumber + 1];
self.view.backgroundColor = [MyViewController pageControlColorWithIndex:pageNumber];
if (pageNumber == 3) {
NSString *path = [[NSBundle mainBundle] pathForResource:@"crunch" ofType:@"wav"];
SystemSoundID soundID;
AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path], &soundID);
AudioServicesPlaySystemSound(soundID);
}
}
答案 0 :(得分:0)
为什么当你想要的viewControllers视图进入屏幕时你不能让声音消失?你知道它何时从scrollViewDidScroll方法和loadPage方法进入屏幕(在页面控制示例中)。通过查看那里的方法,您应该能够识别何时需要播放声音(因为特定视图已经出现在屏幕上)并播放它。另一种方法是使用类似UISoundViewController的UIViewController子类,让它在viewDidLoad上播放声音。
答案 1 :(得分:0)
-viewDidLoad
在加载视图控制器的view
属性时被调用一次*。您只需添加在此方法中调用一次且仅调用一次的内容。
清晰播放声音不是一次又一次的事件。将它们放入-viewDidAppear:
。
*:除非取消分配视图控制器。