滚动到下一页时如何自动播放声音?

时间:2009-08-20 17:15:17

标签: iphone objective-c audio

我正在使用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);
}
}

2 个答案:

答案 0 :(得分:0)

为什么当你想要的viewControllers视图进入屏幕时你不能让声音消失?你知道它何时从scrollViewDidScroll方法和loadPage方法进入屏幕(在页面控制示例中)。通过查看那里的方法,您应该能够识别何时需要播放声音(因为特定视图已经出现在屏幕上)并播放它。另一种方法是使用类似UISoundViewController的UIViewController子类,让它在viewDidLoad上播放声音。

答案 1 :(得分:0)

-viewDidLoad在加载视图控制器的view属性时被调用一次*。您只需添加在此方法中调用一次且仅调用一次的内容。

清晰播放声音不是一次又一次的事件。将它们放入-viewDidAppear:

*:除非取消分配视图控制器。